Permalink
Cannot retrieve contributors at this time
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
spec/specs/partials.yml
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
109 lines (94 sloc)
3.22 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
overview: | | |
Partial tags are used to expand an external template into the current | |
template. | |
The tag's content MUST be a non-whitespace character sequence NOT containing | |
the current closing delimiter. | |
This tag's content names the partial to inject. Set Delimiter tags MUST NOT | |
affect the parsing of a partial. The partial MUST be rendered against the | |
context stack local to the tag. If the named partial cannot be found, the | |
empty string SHOULD be used instead, as in interpolations. | |
Partial tags SHOULD be treated as standalone when appropriate. If this tag | |
is used standalone, any whitespace preceding the tag should treated as | |
indentation, and prepended to each line of the partial before rendering. | |
tests: | |
- name: Basic Behavior | |
desc: The greater-than operator should expand to the named partial. | |
data: { } | |
template: '"{{>text}}"' | |
partials: { text: 'from partial' } | |
expected: '"from partial"' | |
- name: Failed Lookup | |
desc: The empty string should be used when the named partial is not found. | |
data: { } | |
template: '"{{>text}}"' | |
partials: { } | |
expected: '""' | |
- name: Context | |
desc: The greater-than operator should operate within the current context. | |
data: { text: 'content' } | |
template: '"{{>partial}}"' | |
partials: { partial: '*{{text}}*' } | |
expected: '"*content*"' | |
- name: Recursion | |
desc: The greater-than operator should properly recurse. | |
data: { content: "X", nodes: [ { content: "Y", nodes: [] } ] } | |
template: '{{>node}}' | |
partials: { node: '{{content}}<{{#nodes}}{{>node}}{{/nodes}}>' } | |
expected: 'X<Y<>>' | |
# Whitespace Sensitivity | |
- name: Surrounding Whitespace | |
desc: The greater-than operator should not alter surrounding whitespace. | |
data: { } | |
template: '| {{>partial}} |' | |
partials: { partial: "\t|\t" } | |
expected: "| \t|\t |" | |
- name: Inline Indentation | |
desc: Whitespace should be left untouched. | |
data: { data: '|' } | |
template: " {{data}} {{> partial}}\n" | |
partials: { partial: ">\n>" } | |
expected: " | >\n>\n" | |
- name: Standalone Line Endings | |
desc: '"\r\n" should be considered a newline for standalone tags.' | |
data: { } | |
template: "|\r\n{{>partial}}\r\n|" | |
partials: { partial: ">" } | |
expected: "|\r\n>|" | |
- name: Standalone Without Previous Line | |
desc: Standalone tags should not require a newline to precede them. | |
data: { } | |
template: " {{>partial}}\n>" | |
partials: { partial: ">\n>"} | |
expected: " >\n >>" | |
- name: Standalone Without Newline | |
desc: Standalone tags should not require a newline to follow them. | |
data: { } | |
template: ">\n {{>partial}}" | |
partials: { partial: ">\n>" } | |
expected: ">\n >\n >" | |
- name: Standalone Indentation | |
desc: Each line of the partial should be indented before rendering. | |
data: { content: "<\n->" } | |
template: | | |
\ | |
{{>partial}} | |
/ | |
partials: | |
partial: | | |
| | |
{{{content}}} | |
| | |
expected: | | |
\ | |
| | |
< | |
-> | |
| | |
/ | |
# Whitespace Insensitivity | |
- name: Padding Whitespace | |
desc: Superfluous in-tag whitespace should be ignored. | |
data: { boolean: true } | |
template: "|{{> partial }}|" | |
partials: { partial: "[]" } | |
expected: '|[]|' |