diff --git a/src/lib/parser/statement/functions.rs b/src/lib/parser/statement/functions.rs index fccbb54c5a212b19acbec2e8867a70712da3508a..ad6b94a490f15d883cda4b3db6cb0056c8464d5d 100644 --- a/src/lib/parser/statement/functions.rs +++ b/src/lib/parser/statement/functions.rs @@ -1,4 +1,3 @@ -use super::split_pattern; use crate::parser::lexers::assignments::{KeyBuf, KeyIterator, TypeError}; use err_derive::Error; @@ -14,7 +13,8 @@ pub enum FunctionParseError { /// converted into a tuple consisting of a `KeyIterator` iterator, which will collect type /// information, and an optional description of the function. pub fn parse_function(arg: &str) -> (KeyIterator<'_>, Option<&str>) { - let (args, description) = split_pattern(arg, "--"); + let mut parts = arg.splitn(2, "--"); + let (args, description) = (parts.next().unwrap().trim(), parts.next().map(str::trim)); (KeyIterator::new(args), description) } diff --git a/src/lib/parser/statement/mod.rs b/src/lib/parser/statement/mod.rs index 18883805be0efa92f1940879a6a14451faaa0519..9610c08d0d75de979ac7fa7c08fc099c3d02ac97 100644 --- a/src/lib/parser/statement/mod.rs +++ b/src/lib/parser/statement/mod.rs @@ -103,41 +103,3 @@ pub fn parse_and_validate<'b>( StatementVariant::Default(statement) => parse(statement, builtins), } } - -/// Splits a string into two, based on a given pattern. We know that the first string will always -/// exist, but if the pattern is not found, or no string follows the pattern, then the second -/// string will not exist. Useful for splitting the function expression by the "--" pattern. -fn split_pattern<'a>(arg: &'a str, pattern: &str) -> (&'a str, Option<&'a str>) { - match arg.find(pattern) { - Some(pos) => { - let args = &arg[..pos].trim(); - let comment = &arg[pos + pattern.len()..].trim(); - if comment.is_empty() { - (args, None) - } else { - (args, Some(comment)) - } - } - None => (arg, None), - } -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn statement_pattern_splitting() { - let (args, description) = split_pattern("a:int b:bool -- a comment", "--"); - assert_eq!(args, "a:int b:bool"); - assert_eq!(description, Some("a comment")); - - let (args, description) = split_pattern("a --", "--"); - assert_eq!(args, "a"); - assert_eq!(description, None); - - let (args, description) = split_pattern("a", "--"); - assert_eq!(args, "a"); - assert_eq!(description, None); - } -}