diff --git a/orgize/src/error.rs b/orgize/src/error.rs index c6c062d..c3c89bd 100644 --- a/orgize/src/error.rs +++ b/orgize/src/error.rs @@ -104,7 +104,6 @@ impl Org<'_> { | Element::Comment { .. } | Element::FixedWidth { .. } | Element::Keyword(_) - | Element::Drawer(_) | Element::Rule | Element::Cookie(_) | Element::Table(Table::TableEl { .. }) @@ -134,7 +133,7 @@ impl Org<'_> { } // TableCell is a container but it might // not contains anything, e.g. `||||||` - Element::TableCell => (), + Element::Drawer(_) | Element::TableCell => (), } } Ok(()) @@ -145,4 +144,16 @@ impl Org<'_> { pub fn check(&self) -> Result<(), OrgizeError> { self.validate() } + + pub(crate) fn debug_validate(&self) { + if cfg!(debug_assertions) { + if let Err(err) = self.validate() { + panic!( + "Validation error: {:?} at element: {:?}", + err, + err.element(self) + ); + } + } + } } diff --git a/orgize/src/node.rs b/orgize/src/node.rs index 47692c4..0a053c1 100644 --- a/orgize/src/node.rs +++ b/orgize/src/node.rs @@ -83,9 +83,7 @@ impl HeadlineNode { self.title_mut(org).raw = content; - if cfg!(debug_assertions) { - org.validate().unwrap(); - } + org.debug_validate(); } pub fn set_section_content<'a, S: Into>>(self, content: S, org: &mut Org<'a>) { @@ -114,9 +112,7 @@ impl HeadlineNode { ), } - if cfg!(debug_assertions) { - org.validate().unwrap(); - } + org.debug_validate(); } pub fn parent(self, org: &Org<'_>) -> Option { @@ -167,9 +163,7 @@ impl HeadlineNode { pub fn detach(self, org: &mut Org<'_>) { self.node.detach(&mut org.arena); - if cfg!(debug_assertions) { - org.validate().unwrap(); - } + org.debug_validate(); } pub fn is_detached(self, org: &Org<'_>) -> bool { @@ -205,9 +199,7 @@ impl HeadlineNode { self.node.append(headline.node, &mut org.arena); - if cfg!(debug_assertions) { - org.validate().unwrap(); - } + org.debug_validate(); Ok(()) } @@ -229,9 +221,7 @@ impl HeadlineNode { self.title_node.insert_after(headline.node, &mut org.arena); } - if cfg!(debug_assertions) { - org.validate().unwrap(); - } + org.debug_validate(); Ok(()) } @@ -253,9 +243,7 @@ impl HeadlineNode { self.node.insert_before(headline.node, &mut org.arena); - if cfg!(debug_assertions) { - org.validate().unwrap(); - } + org.debug_validate(); Ok(()) } @@ -279,9 +267,7 @@ impl HeadlineNode { self.node.insert_after(headline.node, &mut org.arena); - if cfg!(debug_assertions) { - org.validate().unwrap(); - } + org.debug_validate(); Ok(()) } @@ -343,9 +329,7 @@ impl DocumentNode { ), } - if cfg!(debug_assertions) { - org.validate().unwrap(); - } + org.debug_validate(); } pub fn append(self, headline: HeadlineNode, org: &mut Org<'_>) -> Result<(), OrgizeError> { @@ -359,9 +343,7 @@ impl DocumentNode { org.root.append(headline.node, &mut org.arena); - if cfg!(debug_assertions) { - org.validate().unwrap(); - } + org.debug_validate(); Ok(()) } @@ -381,9 +363,7 @@ impl DocumentNode { org.root.prepend(headline.node, &mut org.arena); } - if cfg!(debug_assertions) { - org.validate().unwrap(); - } + org.debug_validate(); Ok(()) } diff --git a/orgize/src/org.rs b/orgize/src/org.rs index 6b4a883..95888a9 100644 --- a/orgize/src/org.rs +++ b/orgize/src/org.rs @@ -45,9 +45,7 @@ impl<'a> Org<'a> { config, ); - if cfg!(debug_assertions) { - org.validate().unwrap(); - } + org.debug_validate(); org }