mirror of
https://github.com/typst/typst
synced 2025-08-24 03:34:14 +08:00
refactor: Loaded err_at to err_in_text
This commit is contained in:
parent
3879d0826a
commit
2e2f646f2a
@ -593,5 +593,5 @@ pub fn format_xml_like_error(
|
|||||||
err => err.to_string(),
|
err => err.to_string(),
|
||||||
};
|
};
|
||||||
|
|
||||||
data.err_at(pos, msg, err)
|
data.err_in_text(pos, msg, err)
|
||||||
}
|
}
|
||||||
|
@ -176,12 +176,12 @@ fn format_csv_error(
|
|||||||
})
|
})
|
||||||
.unwrap_or(LineCol::one_based(line, 1).into());
|
.unwrap_or(LineCol::one_based(line, 1).into());
|
||||||
match err.kind() {
|
match err.kind() {
|
||||||
::csv::ErrorKind::Utf8 { .. } => data.err_at(pos, msg, "file is not valid utf-8"),
|
::csv::ErrorKind::Utf8 { .. } => data.err_in_text(pos, msg, "file is not valid utf-8"),
|
||||||
::csv::ErrorKind::UnequalLengths { expected_len, len, .. } => {
|
::csv::ErrorKind::UnequalLengths { expected_len, len, .. } => {
|
||||||
let err =
|
let err =
|
||||||
format!("found {len} instead of {expected_len} fields in line {line}");
|
format!("found {len} instead of {expected_len} fields in line {line}");
|
||||||
data.err_at(pos, msg, err)
|
data.err_in_text(pos, msg, err)
|
||||||
}
|
}
|
||||||
_ => data.err_at(pos, "failed to parse CSV", err),
|
_ => data.err_in_text(pos, "failed to parse CSV", err),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -57,7 +57,7 @@ pub fn json(
|
|||||||
let data = source.load(engine.world)?;
|
let data = source.load(engine.world)?;
|
||||||
serde_json::from_slice(data.bytes.as_slice()).map_err(|err| {
|
serde_json::from_slice(data.bytes.as_slice()).map_err(|err| {
|
||||||
let pos = LineCol::one_based(err.line(), err.column());
|
let pos = LineCol::one_based(err.line(), err.column());
|
||||||
data.err_at(pos, "failed to parse JSON", err)
|
data.err_in_text(pos, "failed to parse JSON", err)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -145,12 +145,12 @@ impl Loaded {
|
|||||||
// TODO: should the error even be reported in the file if it's possibly binary?
|
// TODO: should the error even be reported in the file if it's possibly binary?
|
||||||
let start = err.valid_up_to();
|
let start = err.valid_up_to();
|
||||||
let end = start + err.error_len().unwrap_or(0);
|
let end = start + err.error_len().unwrap_or(0);
|
||||||
self.err_at(start..end, "failed to convert to string", FileError::from(err))
|
self.err_in_text(start..end, "failed to convert to string", FileError::from(err))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Report an error, possibly in an external file.
|
/// Report an error, possibly in an external file.
|
||||||
pub fn err_at(
|
pub fn err_in_text(
|
||||||
&self,
|
&self,
|
||||||
pos: impl Into<ReportPos>,
|
pos: impl Into<ReportPos>,
|
||||||
msg: impl std::fmt::Display,
|
msg: impl std::fmt::Display,
|
||||||
|
@ -71,5 +71,5 @@ impl toml {
|
|||||||
/// Format the user-facing TOML error message.
|
/// Format the user-facing TOML error message.
|
||||||
fn format_toml_error(data: &Loaded, error: ::toml::de::Error) -> EcoVec<SourceDiagnostic> {
|
fn format_toml_error(data: &Loaded, error: ::toml::de::Error) -> EcoVec<SourceDiagnostic> {
|
||||||
let pos = error.span().map(ReportPos::Range).unwrap_or_default();
|
let pos = error.span().map(ReportPos::Range).unwrap_or_default();
|
||||||
data.err_at(pos, "failed to parse TOML", error.message())
|
data.err_in_text(pos, "failed to parse TOML", error.message())
|
||||||
}
|
}
|
||||||
|
@ -88,5 +88,5 @@ pub fn format_yaml_error(
|
|||||||
ReportPos::Full(range, line_col)
|
ReportPos::Full(range, line_col)
|
||||||
})
|
})
|
||||||
.unwrap_or_default();
|
.unwrap_or_default();
|
||||||
data.err_at(pos, "failed to parse YAML", error)
|
data.err_in_text(pos, "failed to parse YAML", error)
|
||||||
}
|
}
|
||||||
|
@ -425,7 +425,7 @@ fn format_biblatex_error(
|
|||||||
// TODO: return multiple errors?
|
// TODO: return multiple errors?
|
||||||
let Some(error) = errors.into_iter().next() else {
|
let Some(error) = errors.into_iter().next() else {
|
||||||
// TODO: can this even happen, should we just unwrap?
|
// TODO: can this even happen, should we just unwrap?
|
||||||
return data.err_at(ReportPos::None, "failed to parse BibLaTeX", "???");
|
return data.err_in_text(ReportPos::None, "failed to parse BibLaTeX", "???");
|
||||||
};
|
};
|
||||||
|
|
||||||
let (range, msg) = match error {
|
let (range, msg) = match error {
|
||||||
@ -433,7 +433,7 @@ fn format_biblatex_error(
|
|||||||
BibLaTeXError::Type(error) => (error.span, error.kind.to_string()),
|
BibLaTeXError::Type(error) => (error.span, error.kind.to_string()),
|
||||||
};
|
};
|
||||||
|
|
||||||
data.err_at(range, "failed to parse BibLaTeX", msg)
|
data.err_in_text(range, "failed to parse BibLaTeX", msg)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// A loaded CSL style.
|
/// A loaded CSL style.
|
||||||
@ -480,7 +480,7 @@ impl CslStyle {
|
|||||||
typst_utils::hash128(&(TypeId::of::<Bytes>(), data)),
|
typst_utils::hash128(&(TypeId::of::<Bytes>(), data)),
|
||||||
)))
|
)))
|
||||||
})
|
})
|
||||||
.map_err(|err| data.err_at(ReportPos::None, "failed to load CSL style", err))
|
.map_err(|err| data.err_in_text(ReportPos::None, "failed to load CSL style", err))
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Get the underlying independent style.
|
/// Get the underlying independent style.
|
||||||
|
@ -19,7 +19,7 @@ use crate::foundations::{
|
|||||||
};
|
};
|
||||||
use crate::html::{tag, HtmlElem};
|
use crate::html::{tag, HtmlElem};
|
||||||
use crate::layout::{BlockBody, BlockElem, Em, HAlignment};
|
use crate::layout::{BlockBody, BlockElem, Em, HAlignment};
|
||||||
use crate::loading::{Loaded, DataSource, LineCol, Load, ReportPos};
|
use crate::loading::{DataSource, LineCol, Load, Loaded, ReportPos};
|
||||||
use crate::model::{Figurable, ParElem};
|
use crate::model::{Figurable, ParElem};
|
||||||
use crate::text::{FontFamily, FontList, LinebreakElem, LocalName, TextElem, TextSize};
|
use crate::text::{FontFamily, FontList, LinebreakElem, LocalName, TextElem, TextSize};
|
||||||
use crate::visualize::Color;
|
use crate::visualize::Color;
|
||||||
@ -568,9 +568,12 @@ impl RawSyntax {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn format_syntax_error(data: &Loaded, error: ParseSyntaxError) -> EcoVec<SourceDiagnostic> {
|
fn format_syntax_error(
|
||||||
|
data: &Loaded,
|
||||||
|
error: ParseSyntaxError,
|
||||||
|
) -> EcoVec<SourceDiagnostic> {
|
||||||
let pos = syntax_error_pos(&error);
|
let pos = syntax_error_pos(&error);
|
||||||
data.err_at(pos, "failed to parse syntax", error)
|
data.err_in_text(pos, "failed to parse syntax", error)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn syntax_error_pos(error: &ParseSyntaxError) -> ReportPos {
|
fn syntax_error_pos(error: &ParseSyntaxError) -> ReportPos {
|
||||||
@ -624,7 +627,7 @@ fn format_theme_error(
|
|||||||
syntect::LoadingError::ParseSyntax(err, _) => syntax_error_pos(err),
|
syntect::LoadingError::ParseSyntax(err, _) => syntax_error_pos(err),
|
||||||
_ => ReportPos::None,
|
_ => ReportPos::None,
|
||||||
};
|
};
|
||||||
data.err_at(pos, "failed to parse theme", error)
|
data.err_in_text(pos, "failed to parse theme", error)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// A highlighted line of raw text.
|
/// A highlighted line of raw text.
|
||||||
|
@ -137,7 +137,7 @@ fn format_usvg_error(error: usvg::Error) -> EcoString {
|
|||||||
usvg::Error::ParsingFailed(error) => {
|
usvg::Error::ParsingFailed(error) => {
|
||||||
format_xml_like_error("SVG", &Loaded::dummy(), error)
|
format_xml_like_error("SVG", &Loaded::dummy(), error)
|
||||||
.pop()
|
.pop()
|
||||||
.unwrap()
|
.expect("at least one error")
|
||||||
.message
|
.message
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user