@@ -8,17 +8,22 @@ GROUP_START = _{ "[" }
88GROUP_END = _{ "]" }
99PATH = _{ (ALNUM | "/")+ }
1010filter_path = { PATH }
11+ argument = { string | PATH }
12+ rev = { string | ALNUM+ }
1113
12- string = ${ "\"" ~ inner ~ "\"" }
14+ sstring = _{"\'" ~ inner ~ "\'"}
15+ dstring = _{"\"" ~ inner ~ "\""}
16+ string = ${ sstring | dstring }
1317inner = @{ char* }
1418char = {
15- !("\"" | "\\") ~ ANY
16- | "\\" ~ ("\"" | "\\" | "/" | "b" | "f" | "n" | "r" | "t" | "u")
19+ !("\"" | "\'" | "\ \") ~ ANY
20+ | "\\" ~ ("\"" | "\'" | "\ \" | "/" | "b" | "f" | "n" | "r" | "t" | "u")
1721}
1822
1923filter_spec = { (
2024 filter_group
2125 | filter_rev
26+ | filter_join
2227 | filter_replace
2328 | filter_squash
2429 | filter_presub
@@ -38,12 +43,22 @@ filter_noarg = { CMD_START ~ cmd }
3843filter_rev = {
3944 CMD_START ~ "rev" ~ "("
4045 ~ NEWLINE*
41- ~ (argument ~ filter_spec)?
42- ~ (CMD_SEP+ ~ (argument ~ filter_spec))*
46+ ~ (rev ~ filter_spec)?
47+ ~ (CMD_SEP+ ~ (rev ~ filter_spec))*
4348 ~ NEWLINE*
4449 ~ ")"
4550}
4651
52+ filter_join = {
53+ CMD_START ~ "join" ~ "("
54+ ~ NEWLINE*
55+ ~ (rev ~ filter_spec)?
56+ ~ (CMD_SEP+ ~ (rev ~ filter_spec))*
57+ ~ NEWLINE*
58+ ~ ")"
59+ }
60+
61+
4762filter_replace = {
4863 CMD_START ~ "replace" ~ "("
4964 ~ NEWLINE*
@@ -56,14 +71,12 @@ filter_replace = {
5671filter_squash = {
5772 CMD_START ~ "squash" ~ "("
5873 ~ NEWLINE*
59- ~ (argument ~ ":" ~ string)?
60- ~ (CMD_SEP+ ~ (argument ~ ":" ~ string))*
74+ ~ (rev ~ ":" ~ string)?
75+ ~ (CMD_SEP+ ~ (rev ~ ":" ~ string))*
6176 ~ NEWLINE*
6277 ~ ")"
6378}
6479
65- argument = { string | PATH }
66-
6780cmd = { ALNUM+ }
6881
6982file_entry = { dst_path ~ "=" ~ filter_spec }
0 commit comments