mirror of
https://github.com/CrowCpp/Crow.git
synced 2024-06-07 21:10:44 +00:00
159 lines
3.7 KiB
YAML
159 lines
3.7 KiB
YAML
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: '||'
|