diff --git a/src/deparse.rs b/src/deparse.rs index 85790e2..5601247 100644 --- a/src/deparse.rs +++ b/src/deparse.rs @@ -48,6 +48,24 @@ pub fn deparse<'a, N: Into>>(node: N) -> Result { DeparseResult::deparse(stmt_ref) } +pub fn deparse_stmts<'a, N>(nodes: impl IntoIterator) -> Result +where + N: Into>, +{ + let mut iter = nodes.into_iter(); + let mut result = String::new(); + if let Some(first) = iter.next() { + result.push_str(deparse(first)?.as_str()); + } + + for elem in iter { + result.push(';'); + result.push_str(deparse(elem)?.as_str()); + } + + Ok(result) +} + #[test] fn test_deparse() { fn run_test(query: &str) { diff --git a/src/lib.rs b/src/lib.rs index 877e8ed..a8a36a0 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -18,7 +18,7 @@ pub mod transform; pub mod walk; pub use crate::const_val::ConstValue; -pub use crate::deparse::{DeparseResult, deparse}; +pub use crate::deparse::{DeparseResult, deparse, deparse_stmts}; pub use crate::error::{Error, Result}; pub use crate::node_enum::{Node, NodeMut}; pub use crate::owned::Owned;