aboutsummaryrefslogtreecommitdiffstats
path: root/template_test/interpolation.yml
diff options
context:
space:
mode:
authoripknHama <ipknhama@gmail.com>2014-08-07 01:18:33 +0900
committeripknHama <ipknhama@gmail.com>2014-08-07 01:18:33 +0900
commit031615ac866cc3c8f1900dd4b4aae2106ad31230 (patch)
treeb8b7206ffbd2043368580ec269c97436929fe452 /template_test/interpolation.yml
parenta0c93f5b84cc11b30bc6320ac26127832ef8bf7a (diff)
downloadcrow-031615ac866cc3c8f1900dd4b4aae2106ad31230.tar.gz
crow-031615ac866cc3c8f1900dd4b4aae2106ad31230.zip
source resturcturing + CMake
Diffstat (limited to 'template_test/interpolation.yml')
-rw-r--r--template_test/interpolation.yml238
1 files changed, 0 insertions, 238 deletions
diff --git a/template_test/interpolation.yml b/template_test/interpolation.yml
deleted file mode 100644
index 1b6fff1..0000000
--- a/template_test/interpolation.yml
+++ /dev/null
@@ -1,238 +0,0 @@
-overview: |
- Interpolation tags are used to integrate dynamic content into the template.
-
- The tag's content MUST be a non-whitespace character sequence NOT containing
- the current closing delimiter.
-
- This tag's content names the data to replace the tag. A single period (`.`)
- indicates that the item currently sitting atop the context stack should be
- used; otherwise, name resolution is as follows:
- 1) Split the name on periods; the first part is the name to resolve, any
- remaining parts should be retained.
- 2) Walk the context stack from top to bottom, finding the first context
- that is a) a hash containing the name as a key OR b) an object responding
- to a method with the given name.
- 3) If the context is a hash, the data is the value associated with the
- name.
- 4) If the context is an object, the data is the value returned by the
- method with the given name.
- 5) If any name parts were retained in step 1, each should be resolved
- against a context stack containing only the result from the former
- resolution. If any part fails resolution, the result should be considered
- falsey, and should interpolate as the empty string.
- Data should be coerced into a string (and escaped, if appropriate) before
- interpolation.
-
- The Interpolation tags MUST NOT be treated as standalone.
-tests:
- - name: No Interpolation
- desc: Mustache-free templates should render as-is.
- data: { }
- template: |
- Hello from {Mustache}!
- expected: |
- Hello from {Mustache}!
-
- - name: Basic Interpolation
- desc: Unadorned tags should interpolate content into the template.
- data: { subject: "world" }
- template: |
- Hello, {{subject}}!
- expected: |
- Hello, world!
-
- - name: HTML Escaping
- desc: Basic interpolation should be HTML escaped.
- data: { forbidden: '& " < >' }
- template: |
- These characters should be HTML escaped: {{forbidden}}
- expected: |
- These characters should be HTML escaped: &amp; &quot; &lt; &gt;
-
- - name: Triple Mustache
- desc: Triple mustaches should interpolate without HTML escaping.
- data: { forbidden: '& " < >' }
- template: |
- These characters should not be HTML escaped: {{{forbidden}}}
- expected: |
- These characters should not be HTML escaped: & " < >
-
- - name: Ampersand
- desc: Ampersand should interpolate without HTML escaping.
- data: { forbidden: '& " < >' }
- template: |
- These characters should not be HTML escaped: {{&forbidden}}
- expected: |
- These characters should not be HTML escaped: & " < >
-
- - name: Basic Integer Interpolation
- desc: Integers should interpolate seamlessly.
- data: { mph: 85 }
- template: '"{{mph}} miles an hour!"'
- expected: '"85 miles an hour!"'
-
- - name: Triple Mustache Integer Interpolation
- desc: Integers should interpolate seamlessly.
- data: { mph: 85 }
- template: '"{{{mph}}} miles an hour!"'
- expected: '"85 miles an hour!"'
-
- - name: Ampersand Integer Interpolation
- desc: Integers should interpolate seamlessly.
- data: { mph: 85 }
- template: '"{{&mph}} miles an hour!"'
- expected: '"85 miles an hour!"'
-
- - name: Basic Decimal Interpolation
- desc: Decimals should interpolate seamlessly with proper significance.
- data: { power: 1.210 }
- template: '"{{power}} jiggawatts!"'
- expected: '"1.21 jiggawatts!"'
-
- - name: Triple Mustache Decimal Interpolation
- desc: Decimals should interpolate seamlessly with proper significance.
- data: { power: 1.210 }
- template: '"{{{power}}} jiggawatts!"'
- expected: '"1.21 jiggawatts!"'
-
- - name: Ampersand Decimal Interpolation
- desc: Decimals should interpolate seamlessly with proper significance.
- data: { power: 1.210 }
- template: '"{{&power}} jiggawatts!"'
- expected: '"1.21 jiggawatts!"'
-
- # Context Misses
-
- - name: Basic Context Miss Interpolation
- desc: Failed context lookups should default to empty strings.
- data: { }
- template: "I ({{cannot}}) be seen!"
- expected: "I () be seen!"
-
- - name: Triple Mustache Context Miss Interpolation
- desc: Failed context lookups should default to empty strings.
- data: { }
- template: "I ({{{cannot}}}) be seen!"
- expected: "I () be seen!"
-
- - name: Ampersand Context Miss Interpolation
- desc: Failed context lookups should default to empty strings.
- data: { }
- template: "I ({{&cannot}}) be seen!"
- expected: "I () be seen!"
-
- # Dotted Names
-
- - name: Dotted Names - Basic Interpolation
- desc: Dotted names should be considered a form of shorthand for sections.
- data: { person: { name: 'Joe' } }
- template: '"{{person.name}}" == "{{#person}}{{name}}{{/person}}"'
- expected: '"Joe" == "Joe"'
-
- - name: Dotted Names - Triple Mustache Interpolation
- desc: Dotted names should be considered a form of shorthand for sections.
- data: { person: { name: 'Joe' } }
- template: '"{{{person.name}}}" == "{{#person}}{{{name}}}{{/person}}"'
- expected: '"Joe" == "Joe"'
-
- - name: Dotted Names - Ampersand Interpolation
- desc: Dotted names should be considered a form of shorthand for sections.
- data: { person: { name: 'Joe' } }
- template: '"{{&person.name}}" == "{{#person}}{{&name}}{{/person}}"'
- expected: '"Joe" == "Joe"'
-
- - name: Dotted Names - Arbitrary Depth
- desc: Dotted names should be functional to any level of nesting.
- data:
- a: { b: { c: { d: { e: { name: 'Phil' } } } } }
- template: '"{{a.b.c.d.e.name}}" == "Phil"'
- expected: '"Phil" == "Phil"'
-
- - name: Dotted Names - Broken Chains
- desc: Any falsey value prior to the last part of the name should yield ''.
- data:
- a: { }
- template: '"{{a.b.c}}" == ""'
- expected: '"" == ""'
-
- - name: Dotted Names - Broken Chain Resolution
- desc: Each part of a dotted name should resolve only against its parent.
- data:
- a: { b: { } }
- c: { name: 'Jim' }
- template: '"{{a.b.c.name}}" == ""'
- expected: '"" == ""'
-
- - name: Dotted Names - Initial Resolution
- desc: The first part of a dotted name should resolve as any other name.
- data:
- a: { b: { c: { d: { e: { name: 'Phil' } } } } }
- b: { c: { d: { e: { name: 'Wrong' } } } }
- template: '"{{#a}}{{b.c.d.e.name}}{{/a}}" == "Phil"'
- expected: '"Phil" == "Phil"'
-
- - name: Dotted Names - Context Precedence
- desc: Dotted names should be resolved against former resolutions.
- data:
- a: { b: { } }
- b: { c: 'ERROR' }
- template: '{{#a}}{{b.c}}{{/a}}'
- expected: ''
-
- # Whitespace Sensitivity
-
- - name: Interpolation - Surrounding Whitespace
- desc: Interpolation should not alter surrounding whitespace.
- data: { string: '---' }
- template: '| {{string}} |'
- expected: '| --- |'
-
- - name: Triple Mustache - Surrounding Whitespace
- desc: Interpolation should not alter surrounding whitespace.
- data: { string: '---' }
- template: '| {{{string}}} |'
- expected: '| --- |'
-
- - name: Ampersand - Surrounding Whitespace
- desc: Interpolation should not alter surrounding whitespace.
- data: { string: '---' }
- template: '| {{&string}} |'
- expected: '| --- |'
-
- - name: Interpolation - Standalone
- desc: Standalone interpolation should not alter surrounding whitespace.
- data: { string: '---' }
- template: " {{string}}\n"
- expected: " ---\n"
-
- - name: Triple Mustache - Standalone
- desc: Standalone interpolation should not alter surrounding whitespace.
- data: { string: '---' }
- template: " {{{string}}}\n"
- expected: " ---\n"
-
- - name: Ampersand - Standalone
- desc: Standalone interpolation should not alter surrounding whitespace.
- data: { string: '---' }
- template: " {{&string}}\n"
- expected: " ---\n"
-
- # Whitespace Insensitivity
-
- - name: Interpolation With Padding
- desc: Superfluous in-tag whitespace should be ignored.
- data: { string: "---" }
- template: '|{{ string }}|'
- expected: '|---|'
-
- - name: Triple Mustache With Padding
- desc: Superfluous in-tag whitespace should be ignored.
- data: { string: "---" }
- template: '|{{{ string }}}|'
- expected: '|---|'
-
- - name: Ampersand With Padding
- desc: Superfluous in-tag whitespace should be ignored.
- data: { string: "---" }
- template: '|{{& string }}|'
- expected: '|---|'