git.delta.rocks / jrsonnet / refs/commits / 0f6b26902074

difftreelog

fix(parser) handle empty lines in text block

Lach2020-08-26parent: #295345a.patch.diff
in: master

1 file changed

modifiedcrates/jrsonnet-parser/src/lib.rsdiffbeforeafterboth
79 = str:$((!['\n'][_])* "\n") {str}79 = str:$((!['\n'][_])* "\n") {str}
80 pub rule string_block() -> String80 pub rule string_block() -> String
81 = "|||" (!['\n']single_whitespace())* "\n"81 = "|||" (!['\n']single_whitespace())* "\n"
82 empty_lines:$(['\n']*)
82 prefix:[' ' | '\t']+ first_line:whole_line()83 prefix:[' ' | '\t']+ first_line:whole_line()
83 lines:([' ' | '\t']*<{prefix.len()}> s:whole_line() {s})*84 lines:("\n" {"\n"} / [' ' | '\t']*<{prefix.len()}> s:whole_line() {s})*
84 [' ' | '\t']*<, {prefix.len() - 1}> "|||"85 [' ' | '\t']*<, {prefix.len() - 1}> "|||"
85 {let mut l = first_line.to_owned(); l.extend(lines); l}86 {let mut l = empty_lines.to_owned(); l.push_str(first_line); l.extend(lines); l}
86 pub rule string() -> String87 pub rule string() -> String
87 = "\"" str:$(("\\\"" / "\\\\" / (!['"'][_]))*) "\"" {unescape::unescape(str).unwrap()}88 = "\"" str:$(("\\\"" / "\\\\" / (!['"'][_]))*) "\"" {unescape::unescape(str).unwrap()}
88 / "'" str:$(("\\'" / "\\\\" / (!['\''][_]))*) "'" {unescape::unescape(str).unwrap()}89 / "'" str:$(("\\'" / "\\\\" / (!['\''][_]))*) "'" {unescape::unescape(str).unwrap()}