feat(modulo): refactor form parser to accept new control syntax #856
This commit is contained in:
parent
29edcb900b
commit
fa26b1ffde
|
@ -21,7 +21,8 @@ use super::split::*;
|
||||||
use regex::Regex;
|
use regex::Regex;
|
||||||
|
|
||||||
lazy_static! {
|
lazy_static! {
|
||||||
static ref FIELD_REGEX: Regex = Regex::new(r"\{\{(.*?)\}\}").unwrap();
|
// We need to match for both the new [[name]] syntax and the legacy {{name}} one
|
||||||
|
static ref FIELD_REGEX: Regex = Regex::new(r"\{\{(.*?)\}\}|\[\[(.*?)\]\]").unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, PartialEq)]
|
#[derive(Debug, Clone, PartialEq)]
|
||||||
|
@ -57,6 +58,9 @@ pub fn parse_layout(layout: &str) -> Vec<Vec<Token>> {
|
||||||
if let Some(name) = caps.get(1) {
|
if let Some(name) = caps.get(1) {
|
||||||
let name = name.as_str().to_owned();
|
let name = name.as_str().to_owned();
|
||||||
row.push(Token::Field(name));
|
row.push(Token::Field(name));
|
||||||
|
} else if let Some(name) = caps.get(2) {
|
||||||
|
let name = name.as_str().to_owned();
|
||||||
|
row.push(Token::Field(name));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -74,7 +78,7 @@ mod tests {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_parse_layout() {
|
fn test_parse_layout() {
|
||||||
let layout = "Hey {{name}},\nHow are you?\n \nCheers";
|
let layout = "Hey [[name]],\nHow are you?\n \nCheers";
|
||||||
let result = parse_layout(layout);
|
let result = parse_layout(layout);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
result,
|
result,
|
||||||
|
@ -92,7 +96,7 @@ mod tests {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_parse_layout_2() {
|
fn test_parse_layout_2() {
|
||||||
let layout = "Hey {{name}} {{surname}},";
|
let layout = "Hey [[name]] [[surname]],";
|
||||||
let result = parse_layout(layout);
|
let result = parse_layout(layout);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
result,
|
result,
|
||||||
|
@ -105,4 +109,22 @@ mod tests {
|
||||||
],]
|
],]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_parse_layout_legacy_syntax() {
|
||||||
|
let layout = "Hey {{name}},\nHow are you?\n \nCheers";
|
||||||
|
let result = parse_layout(layout);
|
||||||
|
assert_eq!(
|
||||||
|
result,
|
||||||
|
vec![
|
||||||
|
vec![
|
||||||
|
Token::Text("Hey ".to_owned()),
|
||||||
|
Token::Field("name".to_owned()),
|
||||||
|
Token::Text(",".to_owned())
|
||||||
|
],
|
||||||
|
vec![Token::Text("How are you?".to_owned())],
|
||||||
|
vec![Token::Text("Cheers".to_owned())],
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user