Skip to content

Commit

Permalink
refactor: resolve lint issue on error size
Browse files Browse the repository at this point in the history
  • Loading branch information
sunng87 committed Dec 31, 2023
1 parent d06e071 commit 9c14b32
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 21 deletions.
37 changes: 19 additions & 18 deletions src/error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,27 +15,31 @@ use rhai::{EvalAltResult, ParseError};
/// Error when rendering data on template.
#[derive(Debug, Default)]
pub struct RenderError {
pub desc: String,
pub template_name: Option<String>,
pub line_no: Option<usize>,
pub column_no: Option<usize>,
cause: Option<RenderErrorReason>,
cause: Option<Box<RenderErrorReason>>,
unimplemented: bool,
// backtrace: Backtrace,
}

impl fmt::Display for RenderError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> Result<(), fmt::Error> {
let desc = self
.cause
.as_ref()
.map(|e| e.to_string())
.unwrap_or_else(|| "".to_owned());
match (self.line_no, self.column_no) {
(Some(line), Some(col)) => write!(
f,
"Error rendering \"{}\" line {}, col {}: {}",
self.template_name.as_deref().unwrap_or("Unnamed template"),
line,
col,
self.desc
desc
),
_ => write!(f, "{}", self.desc),
_ => write!(f, "{}", desc),
}
}
}
Expand All @@ -52,6 +56,12 @@ impl From<FromUtf8Error> for RenderError {
}
}

impl From<TemplateError> for RenderError {
fn from(e: TemplateError) -> Self {
RenderErrorReason::TemplateError(e).into()
}
}

/// Template rendering error
#[derive(Debug, Error)]
pub enum RenderErrorReason {
Expand Down Expand Up @@ -132,8 +142,7 @@ pub enum RenderErrorReason {
impl From<RenderErrorReason> for RenderError {
fn from(e: RenderErrorReason) -> RenderError {
RenderError {
desc: e.to_string(),
cause: Some(e),
cause: Some(Box::new(e)),
..Default::default()
}
}
Expand All @@ -142,10 +151,7 @@ impl From<RenderErrorReason> for RenderError {
impl RenderError {
#[deprecated(since = "5.0.0", note = "Use RenderErrorReason instead")]
pub fn new<T: AsRef<str>>(desc: T) -> RenderError {
RenderError {
desc: desc.as_ref().to_owned(),
..Default::default()
}
RenderErrorReason::Other(desc.as_ref().to_string()).into()
}

pub(crate) fn unimplemented() -> RenderError {
Expand All @@ -160,13 +166,12 @@ impl RenderError {
}

#[deprecated(since = "5.0.0", note = "Use RenderErrorReason::NestedError instead")]
pub fn from_error<E>(error_info: &str, cause: E) -> RenderError
pub fn from_error<E>(_error_info: &str, cause: E) -> RenderError
where
E: StdError + Send + Sync + 'static,
{
RenderError {
desc: error_info.to_owned(),
cause: Some(RenderErrorReason::NestedError(Box::new(cause))),
cause: Some(Box::new(RenderErrorReason::NestedError(Box::new(cause)))),
..Default::default()
}
}
Expand All @@ -178,15 +183,11 @@ impl RenderError {

/// Get `RenderErrorReason` for this error
pub fn reason(&self) -> Option<&RenderErrorReason> {
self.cause.as_ref()
self.cause.as_ref().map(|e| e.as_ref())
}
}

impl StdError for RenderError {
fn description(&self) -> &str {
&self.desc
}

fn source(&self) -> Option<&(dyn StdError + 'static)> {
self.reason().and_then(|e| e.source())
}
Expand Down
6 changes: 3 additions & 3 deletions src/registry.rs
Original file line number Diff line number Diff line change
Expand Up @@ -596,7 +596,7 @@ impl<'reg> Registry<'reg> {
)
})
.map(Cow::Owned)
.map_err(|e| RenderErrorReason::from(e).into());
.map_err(RenderError::from);
Some(r)
} else {
self.templates.get(name).map(|t| Ok(Cow::Borrowed(t)))
Expand Down Expand Up @@ -755,7 +755,7 @@ impl<'reg> Registry<'reg> {
..Default::default()
},
)
.map_err(RenderErrorReason::from)?;
.map_err(RenderError::from)?;

let mut out = StringOutput::new();
{
Expand Down Expand Up @@ -784,7 +784,7 @@ impl<'reg> Registry<'reg> {
..Default::default()
},
)
.map_err(RenderErrorReason::from)?;
.map_err(RenderError::from)?;
let mut render_context = RenderContext::new(None);
let mut out = WriteOutput::new(writer);
tpl.render(self, ctx, &mut render_context, &mut out)
Expand Down

0 comments on commit 9c14b32

Please sign in to comment.