Index: pkg/mustache/test/spec/delimiters.yml |
diff --git a/pkg/mustache/test/spec/delimiters.yml b/pkg/mustache/test/spec/delimiters.yml |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ce80b17cd183d0b8e6c4934944adcb331ee7980f |
--- /dev/null |
+++ b/pkg/mustache/test/spec/delimiters.yml |
@@ -0,0 +1,158 @@ |
+overview: | |
+ Set Delimiter tags are used to change the tag delimiters for all content |
+ following the tag in the current compilation unit. |
+ |
+ The tag's content MUST be any two non-whitespace sequences (separated by |
+ whitespace) EXCEPT an equals sign ('=') followed by the current closing |
+ delimiter. |
+ |
+ Set Delimiter tags SHOULD be treated as standalone when appropriate. |
+tests: |
+ - name: Pair Behavior |
+ desc: The equals sign (used on both sides) should permit delimiter changes. |
+ data: { text: 'Hey!' } |
+ template: '{{=<% %>=}}(<%text%>)' |
+ expected: '(Hey!)' |
+ |
+ - name: Special Characters |
+ desc: Characters with special meaning regexen should be valid delimiters. |
+ data: { text: 'It worked!' } |
+ template: '({{=[ ]=}}[text])' |
+ expected: '(It worked!)' |
+ |
+ - name: Sections |
+ desc: Delimiters set outside sections should persist. |
+ data: { section: true, data: 'I got interpolated.' } |
+ template: | |
+ [ |
+ {{#section}} |
+ {{data}} |
+ |data| |
+ {{/section}} |
+ |
+ {{= | | =}} |
+ |#section| |
+ {{data}} |
+ |data| |
+ |/section| |
+ ] |
+ expected: | |
+ [ |
+ I got interpolated. |
+ |data| |
+ |
+ {{data}} |
+ I got interpolated. |
+ ] |
+ |
+ - name: Inverted Sections |
+ desc: Delimiters set outside inverted sections should persist. |
+ data: { section: false, data: 'I got interpolated.' } |
+ template: | |
+ [ |
+ {{^section}} |
+ {{data}} |
+ |data| |
+ {{/section}} |
+ |
+ {{= | | =}} |
+ |^section| |
+ {{data}} |
+ |data| |
+ |/section| |
+ ] |
+ expected: | |
+ [ |
+ I got interpolated. |
+ |data| |
+ |
+ {{data}} |
+ I got interpolated. |
+ ] |
+ |
+ - name: Partial Inheritence |
+ desc: Delimiters set in a parent template should not affect a partial. |
+ data: { value: 'yes' } |
+ partials: |
+ include: '.{{value}}.' |
+ template: | |
+ [ {{>include}} ] |
+ {{= | | =}} |
+ [ |>include| ] |
+ expected: | |
+ [ .yes. ] |
+ [ .yes. ] |
+ |
+ - name: Post-Partial Behavior |
+ desc: Delimiters set in a partial should not affect the parent template. |
+ data: { value: 'yes' } |
+ partials: |
+ include: '.{{value}}. {{= | | =}} .|value|.' |
+ template: | |
+ [ {{>include}} ] |
+ [ .{{value}}. .|value|. ] |
+ expected: | |
+ [ .yes. .yes. ] |
+ [ .yes. .|value|. ] |
+ |
+ # Whitespace Sensitivity |
+ |
+ - name: Surrounding Whitespace |
+ desc: Surrounding whitespace should be left untouched. |
+ data: { } |
+ template: '| {{=@ @=}} |' |
+ expected: '| |' |
+ |
+ - name: Outlying Whitespace (Inline) |
+ desc: Whitespace should be left untouched. |
+ data: { } |
+ template: " | {{=@ @=}}\n" |
+ expected: " | \n" |
+ |
+ - name: Standalone Tag |
+ desc: Standalone lines should be removed from the template. |
+ data: { } |
+ template: | |
+ Begin. |
+ {{=@ @=}} |
+ End. |
+ expected: | |
+ Begin. |
+ End. |
+ |
+ - name: Indented Standalone Tag |
+ desc: Indented standalone lines should be removed from the template. |
+ data: { } |
+ template: | |
+ Begin. |
+ {{=@ @=}} |
+ End. |
+ expected: | |
+ Begin. |
+ End. |
+ |
+ - name: Standalone Line Endings |
+ desc: '"\r\n" should be considered a newline for standalone tags.' |
+ data: { } |
+ template: "|\r\n{{= @ @ =}}\r\n|" |
+ expected: "|\r\n|" |
+ |
+ - name: Standalone Without Previous Line |
+ desc: Standalone tags should not require a newline to precede them. |
+ data: { } |
+ template: " {{=@ @=}}\n=" |
+ expected: "=" |
+ |
+ - name: Standalone Without Newline |
+ desc: Standalone tags should not require a newline to follow them. |
+ data: { } |
+ template: "=\n {{=@ @=}}" |
+ expected: "=\n" |
+ |
+ # Whitespace Insensitivity |
+ |
+ - name: Pair with Padding |
+ desc: Superfluous in-tag whitespace should be ignored. |
+ data: { } |
+ template: '|{{= @ @ =}}|' |
+ expected: '||' |