[TEM #2] - Update default value syntax to `[[# .. ]]`

pull/4/head
sgoudham 3 years ago
parent 0839dceac1
commit d0dbd9b2d5
Signed by: hammy
GPG Key ID: 44E818FD5457EEA4

@ -166,7 +166,7 @@ mod lib_tests {
let start_chapter_content = "{{#template footer.md authors=Goudham & Hazel}}"; let start_chapter_content = "{{#template footer.md authors=Goudham & Hazel}}";
let end_chapter_content = "Designed & Created With Love From - Goudham & Hazel"; let end_chapter_content = "Designed & Created With Love From - Goudham & Hazel";
let file_name = PathBuf::from("footer.md"); let file_name = PathBuf::from("footer.md");
let template_file_contents = "Designed & Created With Love From - {{$authors}}".to_string(); let template_file_contents = "Designed & Created With Love From - [[#authors]]".to_string();
let map = HashMap::from([(file_name, template_file_contents)]); let map = HashMap::from([(file_name, template_file_contents)]);
let file_reader = &TestFileReader::from(map); let file_reader = &TestFileReader::from(map);
@ -187,7 +187,7 @@ mod lib_tests {
Designed & Created With Love From Goudham & Hazel"; Designed & Created With Love From Goudham & Hazel";
let file_name = PathBuf::from("footer.md"); let file_name = PathBuf::from("footer.md");
let template_file_contents = r"- - - - let template_file_contents = r"- - - -
Designed & Created With Love From {{$authors}}" Designed & Created With Love From [[#authors]]"
.to_string(); .to_string();
let map = HashMap::from([(file_name, template_file_contents)]); let map = HashMap::from([(file_name, template_file_contents)]);
let file_reader = &TestFileReader::from(map); let file_reader = &TestFileReader::from(map);
@ -212,10 +212,10 @@ mod lib_tests {
- - - - - - - -
Designed & Created With Love From Goudham & Hazel"; Designed & Created With Love From Goudham & Hazel";
let header_file_name = PathBuf::from("header.md"); let header_file_name = PathBuf::from("header.md");
let header_contents = r"# {{$title}}".to_string(); let header_contents = r"# [[#title]]".to_string();
let footer_file_name = PathBuf::from("footer.md"); let footer_file_name = PathBuf::from("footer.md");
let footer_contents = r"- - - - let footer_contents = r"- - - -
Designed & Created With Love From {{$authors}}" Designed & Created With Love From [[#authors]]"
.to_string(); .to_string();
let map = HashMap::from([ let map = HashMap::from([
(footer_file_name, footer_contents), (footer_file_name, footer_contents),
@ -234,7 +234,7 @@ mod lib_tests {
let start_chapter_content = "{{#template footer.md}}"; let start_chapter_content = "{{#template footer.md}}";
let end_chapter_content = "Designed By - Goudham"; let end_chapter_content = "Designed By - Goudham";
let file_name = PathBuf::from("footer.md"); let file_name = PathBuf::from("footer.md");
let template_file_contents = "Designed By - {{$authors Goudham}}".to_string(); let template_file_contents = "Designed By - [[#authors Goudham]]".to_string();
let map = HashMap::from([(file_name, template_file_contents)]); let map = HashMap::from([(file_name, template_file_contents)]);
let file_reader = &TestFileReader::from(map); let file_reader = &TestFileReader::from(map);
@ -249,7 +249,7 @@ mod lib_tests {
let start_chapter_content = "{{#template footer.md authors=Hazel}}"; let start_chapter_content = "{{#template footer.md authors=Hazel}}";
let end_chapter_content = "Designed By - Hazel"; let end_chapter_content = "Designed By - Hazel";
let file_name = PathBuf::from("footer.md"); let file_name = PathBuf::from("footer.md");
let template_file_contents = "Designed By - {{$authors Goudham}}".to_string(); let template_file_contents = "Designed By - [[#authors Goudham]]".to_string();
let map = HashMap::from([(file_name, template_file_contents)]); let map = HashMap::from([(file_name, template_file_contents)]);
let file_reader = &TestFileReader::from(map); let file_reader = &TestFileReader::from(map);
@ -269,11 +269,11 @@ mod lib_tests {
<img src='example.png' alt='Example Title'> <img src='example.png' alt='Example Title'>
Some content..."; Some content...";
let header_file_name = PathBuf::from("header.md"); let header_file_name = PathBuf::from("header.md");
let header_contents = r"# {{$title}} let header_contents = r"# [[#title]]
{{#template image.md}}" {{#template image.md title=[[#title]]}}"
.to_string(); .to_string();
let image_file_name = PathBuf::from("image.md"); let image_file_name = PathBuf::from("image.md");
let image_contents = r"<img src='example.png' alt='Example Title'>".to_string(); let image_contents = r"<img src='example.png' alt='[[#title]]'>".to_string();
let map = HashMap::from([ let map = HashMap::from([
(image_file_name, image_contents), (image_file_name, image_contents),
(header_file_name, header_contents), (header_file_name, header_contents),

@ -43,28 +43,28 @@ lazy_static! {
) )
.unwrap(); .unwrap();
// r"(?x)\\\{\{\#.*\}\}|\{\{\s*\#([\w'<>.:^\-\(\)\*\+\|\\\/\?]+)\s*\}\}|\{\{\s*\#([\w'<>.:^\-\(\)\*\+\|\\\/\?]+)\s+([^}]+)\}\}" // r"(?x)\\\[\[.*\]\]|\[\[\s*\#([\S]+)\s*\]\]|\[\[\s*\#([\S]+)\s+([^]]+)\]\]"
static ref ARGS: Regex = Regex::new( static ref ARGS: Regex = Regex::new(
r"(?x) # enable insignificant whitespace mode r"(?x) # enable insignificant whitespace mode
\\\{\{ # escaped link opening parens \\\[\[ # escaped link opening square brackets
\$.* # match any character \#.* # match any character
\}\} # escaped link closing parens \]\] # escaped link closing parens
| # or | # or
\{\{\s* # link opening parens and whitespace(s) \[\[\s* # link opening parens and whitespace(s)
\$([\S]+) # arg name \#([\S]+) # arg name
\s* # optional separating whitespace(s) \s* # optional separating whitespace(s)
\}\} # link closing parens \]\] # link closing parens
| # or | # or
\{\{\s* # link opening parens and whitespace(s) \[\[\s* # link opening parens and whitespace(s)
\$([\S]+) # arg name \#([\S]+) # arg name
\s+ # optional separating whitespace(s) \s+ # optional separating whitespace(s)
([^}]+) # match everything after space ([^]]+) # match everything after space
\}\} # link closing parens" \]\] # link closing parens"
) )
.unwrap(); .unwrap();
} }
@ -525,25 +525,25 @@ year=2022
#[test] #[test]
fn test_extract_args_partial_match() { fn test_extract_args_partial_match() {
let s = "Some random text with {{$height..."; let s = "Some random text with [[#height...";
assert_eq!(extract_args(s).collect::<Vec<_>>(), vec![]); assert_eq!(extract_args(s).collect::<Vec<_>>(), vec![]);
let s = "Some random text with {{$image ferris.png..."; let s = "Some random text with [[#image ferris.png...";
assert_eq!(extract_args(s).collect::<Vec<_>>(), vec![]); assert_eq!(extract_args(s).collect::<Vec<_>>(), vec![]);
let s = "Some random text with {{$width 550..."; let s = "Some random text with [[#width 550...";
assert_eq!(extract_args(s).collect::<Vec<_>>(), vec![]); assert_eq!(extract_args(s).collect::<Vec<_>>(), vec![]);
let s = "Some random text with \\{{$title..."; let s = "Some random text with \\[[#title...";
assert_eq!(extract_args(s).collect::<Vec<_>>(), vec![]); assert_eq!(extract_args(s).collect::<Vec<_>>(), vec![]);
} }
#[test] #[test]
fn test_extract_args_empty() { fn test_extract_args_empty() {
let s = "Some random text with {{}} {{$}}..."; let s = "Some random text with [[]] [[#]]...";
assert_eq!(extract_args(s).collect::<Vec<_>>(), vec![]); assert_eq!(extract_args(s).collect::<Vec<_>>(), vec![]);
} }
#[test] #[test]
fn test_extract_args_simple() { fn test_extract_args_simple() {
let s = "This is some random text with {{$path}} and then some more random text"; let s = "This is some random text with [[#path]] and then some more random text";
let res = extract_args(s).collect::<Vec<_>>(); let res = extract_args(s).collect::<Vec<_>>();
@ -553,7 +553,7 @@ year=2022
start_index: 30, start_index: 30,
end_index: 39, end_index: 39,
args_type: ArgsType::Plain("path"), args_type: ArgsType::Plain("path"),
args_text: "{{$path}}" args_text: "[[#path]]"
}] }]
); );
} }
@ -562,20 +562,20 @@ year=2022
fn test_extract_args_escaped() { fn test_extract_args_escaped() {
let start = r" let start = r"
Example Text Example Text
\{{$height 200px}} << an escaped argument! \[[#height 200px]] << an escaped argument!
"; ";
let end = r" let end = r"
Example Text Example Text
{{$height 200px}} << an escaped argument! [[#height 200px]] << an escaped argument!
"; ";
assert_eq!(Args::replace(start, &HashMap::<&str, &str>::new()), end); assert_eq!(Args::replace(start, &HashMap::<&str, &str>::new()), end);
} }
#[test] #[test]
fn test_extract_args_with_spaces() { fn test_extract_args_with_spaces() {
let s1 = "This is some random text with {{ $path }}"; let s1 = "This is some random text with [[ #path ]]";
let s2 = "This is some random text with {{$path }}"; let s2 = "This is some random text with [[#path ]]";
let s3 = "This is some random text with {{ $path}}"; let s3 = "This is some random text with [[ #path]]";
let res1 = extract_args(s1).collect::<Vec<_>>(); let res1 = extract_args(s1).collect::<Vec<_>>();
let res2 = extract_args(s2).collect::<Vec<_>>(); let res2 = extract_args(s2).collect::<Vec<_>>();
@ -587,7 +587,7 @@ year=2022
start_index: 30, start_index: 30,
end_index: 51, end_index: 51,
args_type: ArgsType::Plain("path"), args_type: ArgsType::Plain("path"),
args_text: "{{ $path }}" args_text: "[[ #path ]]"
}] }]
); );
@ -597,7 +597,7 @@ year=2022
start_index: 30, start_index: 30,
end_index: 46, end_index: 46,
args_type: ArgsType::Plain("path"), args_type: ArgsType::Plain("path"),
args_text: "{{$path }}" args_text: "[[#path ]]"
}] }]
); );
@ -607,14 +607,14 @@ year=2022
start_index: 30, start_index: 30,
end_index: 44, end_index: 44,
args_type: ArgsType::Plain("path"), args_type: ArgsType::Plain("path"),
args_text: "{{ $path}}" args_text: "[[ #path]]"
}] }]
); );
} }
#[test] #[test]
fn test_extract_args_with_default_value() { fn test_extract_args_with_default_value() {
let s = "This is some random text with {{$path 200px}} and then some more random text"; let s = "This is some random text with [[#path 200px]] and then some more random text";
let res = extract_args(s).collect::<Vec<_>>(); let res = extract_args(s).collect::<Vec<_>>();
@ -624,7 +624,7 @@ year=2022
start_index: 30, start_index: 30,
end_index: 45, end_index: 45,
args_type: ArgsType::Default("path", "200px"), args_type: ArgsType::Default("path", "200px"),
args_text: "{{$path 200px}}" args_text: "[[#path 200px]]"
}] }]
); );
} }
@ -632,7 +632,7 @@ year=2022
#[test] #[test]
fn test_extract_args_with_default_value_and_spaces() { fn test_extract_args_with_default_value_and_spaces() {
let s = let s =
"This is some random text with {{ $path 400px }} and then some more random text"; "This is some random text with [[ #path 400px ]] and then some more random text";
let res = extract_args(s).collect::<Vec<_>>(); let res = extract_args(s).collect::<Vec<_>>();
@ -642,14 +642,14 @@ year=2022
start_index: 30, start_index: 30,
end_index: 52, end_index: 52,
args_type: ArgsType::Default("path", "400px "), args_type: ArgsType::Default("path", "400px "),
args_text: "{{ $path 400px }}" args_text: "[[ #path 400px ]]"
}] }]
); );
} }
#[test] #[test]
fn test_extract_args_with_multiple_spaced_default_value() { fn test_extract_args_with_multiple_spaced_default_value() {
let s = "{{$title An Amazing Title}}"; let s = "[[#title An Amazing Title]]";
let res = extract_args(s).collect::<Vec<_>>(); let res = extract_args(s).collect::<Vec<_>>();
@ -659,7 +659,7 @@ year=2022
start_index: 0, start_index: 0,
end_index: 27, end_index: 27,
args_type: ArgsType::Default("title", "An Amazing Title"), args_type: ArgsType::Default("title", "An Amazing Title"),
args_text: "{{$title An Amazing Title}}" args_text: "[[#title An Amazing Title]]"
}] }]
); );
} }
@ -668,7 +668,7 @@ year=2022
fn test_replace_args_simple() { fn test_replace_args_simple() {
let start = r" let start = r"
Example Text Example Text
{{$height}} << an argument! [[#height]] << an argument!
"; ";
let end = r" let end = r"
Example Text Example Text
@ -684,7 +684,7 @@ year=2022
fn test_replace_args_with_default() { fn test_replace_args_with_default() {
let start = r" let start = r"
Example Text Example Text
{{$height 300px}} << an argument! [[#height 300px]] << an argument!
"; ";
let end = r" let end = r"
Example Text Example Text
@ -697,7 +697,7 @@ year=2022
fn test_replace_args_overriding_default() { fn test_replace_args_overriding_default() {
let start = r" let start = r"
Example Text Example Text
{{$height 300px}} << an argument! [[#height 300px]] << an argument!
"; ";
let end = r" let end = r"
Example Text Example Text

Loading…
Cancel
Save