Skip to content

Commit

Permalink
Tests for rendering lambdas with alternate delims.
Browse files Browse the repository at this point in the history
  • Loading branch information
pvande committed Mar 20, 2011
1 parent 53b22b1 commit c58150e
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 3 deletions.
1 change: 1 addition & 0 deletions Changes
Original file line number Diff line number Diff line change
@@ -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.
Expand Down
33 changes: 30 additions & 3 deletions specs/~lambdas.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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:
Expand Down Expand Up @@ -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:
Expand Down

0 comments on commit c58150e

Please sign in to comment.