From 031615ac866cc3c8f1900dd4b4aae2106ad31230 Mon Sep 17 00:00:00 2001 From: ipknHama Date: Thu, 7 Aug 2014 01:18:33 +0900 Subject: source resturcturing + CMake --- template_test/sections.yml | 256 --------------------------------------------- 1 file changed, 256 deletions(-) delete mode 100644 template_test/sections.yml (limited to 'template_test/sections.yml') diff --git a/template_test/sections.yml b/template_test/sections.yml deleted file mode 100644 index f62d9cb..0000000 --- a/template_test/sections.yml +++ /dev/null @@ -1,256 +0,0 @@ -overview: | - Section tags and End Section tags are used in combination to wrap a section - of the template for iteration - - These tags' content MUST be a non-whitespace character sequence NOT - containing the current closing delimiter; each Section tag MUST be followed - by an End Section tag with the same content within the same section. - - This tag's content names the data to replace the tag. 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 and the method with the given name has an - arity of 1, the method SHOULD be called with a String containing the - unprocessed contents of the sections; the data is the value returned. - 5) Otherwise, the data is the value returned by calling the method with - the given name. - 6) 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. - If the data is not of a list type, it is coerced into a list as follows: if - the data is truthy (e.g. `!!data == true`), use a single-element list - containing the data, otherwise use an empty list. - - For each element in the data list, the element MUST be pushed onto the - context stack, the section MUST be rendered, and the element MUST be popped - off the context stack. - - Section and End Section tags SHOULD be treated as standalone when - appropriate. -tests: - - name: Truthy - desc: Truthy sections should have their contents rendered. - data: { boolean: true } - template: '"{{#boolean}}This should be rendered.{{/boolean}}"' - expected: '"This should be rendered."' - - - name: Falsey - desc: Falsey sections should have their contents omitted. - data: { boolean: false } - template: '"{{#boolean}}This should not be rendered.{{/boolean}}"' - expected: '""' - - - name: Context - desc: Objects and hashes should be pushed onto the context stack. - data: { context: { name: 'Joe' } } - template: '"{{#context}}Hi {{name}}.{{/context}}"' - expected: '"Hi Joe."' - - - name: Deeply Nested Contexts - desc: All elements on the context stack should be accessible. - data: - a: { one: 1 } - b: { two: 2 } - c: { three: 3 } - d: { four: 4 } - e: { five: 5 } - template: | - {{#a}} - {{one}} - {{#b}} - {{one}}{{two}}{{one}} - {{#c}} - {{one}}{{two}}{{three}}{{two}}{{one}} - {{#d}} - {{one}}{{two}}{{three}}{{four}}{{three}}{{two}}{{one}} - {{#e}} - {{one}}{{two}}{{three}}{{four}}{{five}}{{four}}{{three}}{{two}}{{one}} - {{/e}} - {{one}}{{two}}{{three}}{{four}}{{three}}{{two}}{{one}} - {{/d}} - {{one}}{{two}}{{three}}{{two}}{{one}} - {{/c}} - {{one}}{{two}}{{one}} - {{/b}} - {{one}} - {{/a}} - expected: | - 1 - 121 - 12321 - 1234321 - 123454321 - 1234321 - 12321 - 121 - 1 - - - name: List - desc: Lists should be iterated; list items should visit the context stack. - data: { list: [ { item: 1 }, { item: 2 }, { item: 3 } ] } - template: '"{{#list}}{{item}}{{/list}}"' - expected: '"123"' - - - name: Empty List - desc: Empty lists should behave like falsey values. - data: { list: [ ] } - template: '"{{#list}}Yay lists!{{/list}}"' - expected: '""' - - - name: Doubled - desc: Multiple sections per template should be permitted. - data: { bool: true, two: 'second' } - template: | - {{#bool}} - * first - {{/bool}} - * {{two}} - {{#bool}} - * third - {{/bool}} - expected: | - * first - * second - * third - - - name: Nested (Truthy) - desc: Nested truthy sections should have their contents rendered. - data: { bool: true } - template: "| A {{#bool}}B {{#bool}}C{{/bool}} D{{/bool}} E |" - expected: "| A B C D E |" - - - name: Nested (Falsey) - desc: Nested falsey sections should be omitted. - data: { bool: false } - template: "| A {{#bool}}B {{#bool}}C{{/bool}} D{{/bool}} E |" - expected: "| A E |" - - - name: Context Misses - desc: Failed context lookups should be considered falsey. - data: { } - template: "[{{#missing}}Found key 'missing'!{{/missing}}]" - expected: "[]" - - # Implicit Iterators - - - name: Implicit Iterator - String - desc: Implicit iterators should directly interpolate strings. - data: - list: [ 'a', 'b', 'c', 'd', 'e' ] - template: '"{{#list}}({{.}}){{/list}}"' - expected: '"(a)(b)(c)(d)(e)"' - - - name: Implicit Iterator - Integer - desc: Implicit iterators should cast integers to strings and interpolate. - data: - list: [ 1, 2, 3, 4, 5 ] - template: '"{{#list}}({{.}}){{/list}}"' - expected: '"(1)(2)(3)(4)(5)"' - - - name: Implicit Iterator - Decimal - desc: Implicit iterators should cast decimals to strings and interpolate. - data: - list: [ 1.10, 2.20, 3.30, 4.40, 5.50 ] - template: '"{{#list}}({{.}}){{/list}}"' - expected: '"(1.1)(2.2)(3.3)(4.4)(5.5)"' - - # Dotted Names - - - name: Dotted Names - Truthy - desc: Dotted names should be valid for Section tags. - data: { a: { b: { c: true } } } - template: '"{{#a.b.c}}Here{{/a.b.c}}" == "Here"' - expected: '"Here" == "Here"' - - - name: Dotted Names - Falsey - desc: Dotted names should be valid for Section tags. - data: { a: { b: { c: false } } } - template: '"{{#a.b.c}}Here{{/a.b.c}}" == ""' - expected: '"" == ""' - - - name: Dotted Names - Broken Chains - desc: Dotted names that cannot be resolved should be considered falsey. - data: { a: { } } - template: '"{{#a.b.c}}Here{{/a.b.c}}" == ""' - expected: '"" == ""' - - # Whitespace Sensitivity - - - name: Surrounding Whitespace - desc: Sections should not alter surrounding whitespace. - data: { boolean: true } - template: " | {{#boolean}}\t|\t{{/boolean}} | \n" - expected: " | \t|\t | \n" - - - name: Internal Whitespace - desc: Sections should not alter internal whitespace. - data: { boolean: true } - template: " | {{#boolean}} {{! Important Whitespace }}\n {{/boolean}} | \n" - expected: " | \n | \n" - - - name: Indented Inline Sections - desc: Single-line sections should not alter surrounding whitespace. - data: { boolean: true } - template: " {{#boolean}}YES{{/boolean}}\n {{#boolean}}GOOD{{/boolean}}\n" - expected: " YES\n GOOD\n" - - - name: Standalone Lines - desc: Standalone lines should be removed from the template. - data: { boolean: true } - template: | - | This Is - {{#boolean}} - | - {{/boolean}} - | A Line - expected: | - | This Is - | - | A Line - - - name: Indented Standalone Lines - desc: Indented standalone lines should be removed from the template. - data: { boolean: true } - template: | - | This Is - {{#boolean}} - | - {{/boolean}} - | A Line - expected: | - | This Is - | - | A Line - - - name: Standalone Line Endings - desc: '"\r\n" should be considered a newline for standalone tags.' - data: { boolean: true } - template: "|\r\n{{#boolean}}\r\n{{/boolean}}\r\n|" - expected: "|\r\n|" - - - name: Standalone Without Previous Line - desc: Standalone tags should not require a newline to precede them. - data: { boolean: true } - template: " {{#boolean}}\n#{{/boolean}}\n/" - expected: "#\n/" - - - name: Standalone Without Newline - desc: Standalone tags should not require a newline to follow them. - data: { boolean: true } - template: "#{{#boolean}}\n/\n {{/boolean}}" - expected: "#\n/\n" - - # Whitespace Insensitivity - - - name: Padding - desc: Superfluous in-tag whitespace should be ignored. - data: { boolean: true } - template: '|{{# boolean }}={{/ boolean }}|' - expected: '|=|' -- cgit v1.2.3-54-g00ecf