aboutsummaryrefslogtreecommitdiff
path: root/src/sexp/util.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/sexp/util.rs')
-rw-r--r--src/sexp/util.rs8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/sexp/util.rs b/src/sexp/util.rs
index a28aaad..3de45d4 100644
--- a/src/sexp/util.rs
+++ b/src/sexp/util.rs
@@ -86,4 +86,12 @@ impl SExp {
_ => None
}
}
+
+ pub fn check_case(self) -> Option<(SExp, Vec<SExp>)> {
+ match &(self.parts())[..] {
+ [casekw, scrutinee, cases @ ..] if casekw.clone() == Atom(Case) =>
+ Some((scrutinee.clone(), cases.to_vec())),
+ _ => None,
+ }
+ }
}