123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- 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: '||'
|