From c58150e525423283fd57677bea3bd963f3937aeb Mon Sep 17 00:00:00 2001 From: Pieter van de Bruggen Date: Sun, 20 Mar 2011 10:37:05 -0700 Subject: Tests for rendering lambdas with alternate delims. --- Changes | 1 + specs/~lambdas.yml | 33 ++++++++++++++++++++++++++++++--- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/Changes b/Changes index cc73ee8..eb3b164 100644 --- a/Changes +++ b/Changes @@ -1,5 +1,6 @@ 2011-03-??: v1.0.3 Added tests for standalone tags at string boundaries. + Added tests for rendering lambda returns after delimiter changes. 2011-03-05: v1.0.2 Added tests for indented inline sections. diff --git a/specs/~lambdas.yml b/specs/~lambdas.yml index 741a98a..e0e9bf3 100644 --- a/specs/~lambdas.yml +++ b/specs/~lambdas.yml @@ -4,12 +4,13 @@ overview: | When used as the data value for an Interpolation tag, the lambda MUST be treatable as an arity 0 function, and invoked as such. The returned value - MUST be rendered, then interpolated in place of the lambda. + MUST be rendered against the default delimiters, then interpolated in place + of the lambda. When used as the data value for a Section tag, the lambda MUST be treatable as an arity 1 function, and invoked as such (passing a String containing the - unprocessed section contents). The returned value MUST be rendered, then - interpolated in place of the section. + unprocessed section contents). The returned value MUST be rendered against + the current delimiters, then interpolated in place of the section. tests: - name: Interpolation desc: A lambda's return value should be interpolated. @@ -36,6 +37,19 @@ tests: template: "Hello, {{lambda}}!" expected: "Hello, world!" + - name: Interpolation - Alternate Delimiters + desc: A lambda's return value should parse with the default delimiters. + data: + planet: "world" + lambda: !code + ruby: 'proc { "|planet| => {{planet}}" }' + perl: 'sub { "|planet| => {{planet}}" }' + js: 'function() { return "|planet| => {{planet}}" }' + php: 'return "|planet| => {{planet}}";' + python: 'lambda: "|planet| => {{planet}}"' + template: "{{= | | =}}\nHello, (|&lambda|)!" + expected: "Hello, (|planet| => world)!" + - name: Interpolation - Multiple Calls desc: Interpolated lambdas should not be cached. data: @@ -86,6 +100,19 @@ tests: template: "<{{#lambda}}-{{/lambda}}>" expected: "<-Earth->" + - name: Section - Alternate Delimiters + desc: Lambdas used for sections should parse with the current delimiters. + data: + planet: "Earth" + lambda: !code + ruby: 'proc { |text| "#{text}{{planet}} => |planet|#{text}" }' + perl: 'sub { $_[0] . "{{planet}} => |planet|" . $_[0] }' + js: 'function(txt) { return txt + "{{planet}} => |planet|" + txt }' + php: 'return $text . "{{planet}} => |planet|" . $text;' + python: 'lambda text: "%s{{planet}} => |planet|%s" % (text, text)' + template: "{{= | | =}}<|#lambda|-|/lambda|>" + expected: "<-{{planet}} => Earth->" + - name: Section - Multiple Calls desc: Lambdas used for sections should not be cached. data: -- cgit v1.2.1