summaryrefslogtreecommitdiff
path: root/specs/~lambdas.yml
diff options
context:
space:
mode:
Diffstat (limited to 'specs/~lambdas.yml')
-rw-r--r--specs/~lambdas.yml110
1 files changed, 60 insertions, 50 deletions
diff --git a/specs/~lambdas.yml b/specs/~lambdas.yml
index e0e9bf3..b9fb4d0 100644
--- a/specs/~lambdas.yml
+++ b/specs/~lambdas.yml
@@ -16,11 +16,12 @@ tests:
desc: A lambda's return value should be interpolated.
data:
lambda: !code
- ruby: 'proc { "world" }'
- perl: 'sub { "world" }'
- js: 'function() { return "world" }'
- php: 'return "world";'
- python: 'lambda: "world"'
+ ruby: 'proc { "world" }'
+ perl: 'sub { "world" }'
+ js: 'function() { return "world" }'
+ php: 'return "world";'
+ python: 'lambda: "world"'
+ clojure: '(fn [] "world")'
template: "Hello, {{lambda}}!"
expected: "Hello, world!"
@@ -29,11 +30,12 @@ tests:
data:
planet: "world"
lambda: !code
- ruby: 'proc { "{{planet}}" }'
- perl: 'sub { "{{planet}}" }'
- js: 'function() { return "{{planet}}" }'
- php: 'return "{{planet}}";'
- python: 'lambda: "{{planet}}"'
+ ruby: 'proc { "{{planet}}" }'
+ perl: 'sub { "{{planet}}" }'
+ js: 'function() { return "{{planet}}" }'
+ php: 'return "{{planet}}";'
+ python: 'lambda: "{{planet}}"'
+ clojure: '(fn [] "{{planet}}")'
template: "Hello, {{lambda}}!"
expected: "Hello, world!"
@@ -42,11 +44,12 @@ tests:
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}}"'
+ ruby: 'proc { "|planet| => {{planet}}" }'
+ perl: 'sub { "|planet| => {{planet}}" }'
+ js: 'function() { return "|planet| => {{planet}}" }'
+ php: 'return "|planet| => {{planet}}";'
+ python: 'lambda: "|planet| => {{planet}}"'
+ clojure: '(fn [] "|planet| => {{planet}}")'
template: "{{= | | =}}\nHello, (|&lambda|)!"
expected: "Hello, (|planet| => world)!"
@@ -54,11 +57,12 @@ tests:
desc: Interpolated lambdas should not be cached.
data:
lambda: !code
- ruby: 'proc { $calls ||= 0; $calls += 1 }'
- perl: 'sub { no strict; $calls += 1 }'
- js: 'function() { return (g=(function(){return this})()).calls=(g.calls||0)+1 }'
- php: 'global $calls; return ++$calls;'
- python: 'lambda: globals().update(calls=globals().get("calls",0)+1) or calls'
+ ruby: 'proc { $calls ||= 0; $calls += 1 }'
+ perl: 'sub { no strict; $calls += 1 }'
+ js: 'function() { return (g=(function(){return this})()).calls=(g.calls||0)+1 }'
+ php: 'global $calls; return ++$calls;'
+ python: 'lambda: globals().update(calls=globals().get("calls",0)+1) or calls'
+ clojure: '(def g (atom 0)) (fn [] (swap! g inc))'
template: '{{lambda}} == {{{lambda}}} == {{lambda}}'
expected: '1 == 2 == 3'
@@ -66,11 +70,12 @@ tests:
desc: Lambda results should be appropriately escaped.
data:
lambda: !code
- ruby: 'proc { ">" }'
- perl: 'sub { ">" }'
- js: 'function() { return ">" }'
- php: 'return ">";'
- python: 'lambda: ">"'
+ ruby: 'proc { ">" }'
+ perl: 'sub { ">" }'
+ js: 'function() { return ">" }'
+ php: 'return ">";'
+ python: 'lambda: ">"'
+ clojure: '(fn [] ">")'
template: "<{{lambda}}{{{lambda}}}"
expected: "<&gt;>"
@@ -79,11 +84,12 @@ tests:
data:
x: 'Error!'
lambda: !code
- ruby: 'proc { |text| text == "{{x}}" ? "yes" : "no" }'
- perl: 'sub { $_[0] eq "{{x}}" ? "yes" : "no" }'
- js: 'function(txt) { return (txt == "{{x}}" ? "yes" : "no") }'
- php: 'return ($text == "{{x}}") ? "yes" : "no";'
- python: 'lambda text: text == "{{x}}" and "yes" or "no"'
+ ruby: 'proc { |text| text == "{{x}}" ? "yes" : "no" }'
+ perl: 'sub { $_[0] eq "{{x}}" ? "yes" : "no" }'
+ js: 'function(txt) { return (txt == "{{x}}" ? "yes" : "no") }'
+ php: 'return ($text == "{{x}}") ? "yes" : "no";'
+ python: 'lambda text: text == "{{x}}" and "yes" or "no"'
+ clojure: '(fn [text] (if (= text "{{x}}") "yes" "no"))'
template: "<{{#lambda}}{{x}}{{/lambda}}>"
expected: "<yes>"
@@ -92,11 +98,12 @@ tests:
data:
planet: "Earth"
lambda: !code
- ruby: 'proc { |text| "#{text}{{planet}}#{text}" }'
- perl: 'sub { $_[0] . "{{planet}}" . $_[0] }'
- js: 'function(txt) { return txt + "{{planet}}" + txt }'
- php: 'return $text . "{{planet}}" . $text;'
- python: 'lambda text: "%s{{planet}}%s" % (text, text)'
+ ruby: 'proc { |text| "#{text}{{planet}}#{text}" }'
+ perl: 'sub { $_[0] . "{{planet}}" . $_[0] }'
+ js: 'function(txt) { return txt + "{{planet}}" + txt }'
+ php: 'return $text . "{{planet}}" . $text;'
+ python: 'lambda text: "%s{{planet}}%s" % (text, text)'
+ clojure: '(fn [text] (str text "{{planet}}" text))'
template: "<{{#lambda}}-{{/lambda}}>"
expected: "<-Earth->"
@@ -105,11 +112,12 @@ tests:
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)'
+ 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)'
+ clojure: '(fn [text] (str text "{{planet}} => |planet|" text))'
template: "{{= | | =}}<|#lambda|-|/lambda|>"
expected: "<-{{planet}} => Earth->"
@@ -117,11 +125,12 @@ tests:
desc: Lambdas used for sections should not be cached.
data:
lambda: !code
- ruby: 'proc { |text| "__#{text}__" }'
- perl: 'sub { "__" . $_[0] . "__" }'
- js: 'function(txt) { return "__" + txt + "__" }'
- php: 'return "__" . $text . "__";'
- python: 'lambda text: "__%s__" % (text)'
+ ruby: 'proc { |text| "__#{text}__" }'
+ perl: 'sub { "__" . $_[0] . "__" }'
+ js: 'function(txt) { return "__" + txt + "__" }'
+ php: 'return "__" . $text . "__";'
+ python: 'lambda text: "__%s__" % (text)'
+ clojure: '(fn [text] (str "__" text "__"))'
template: '{{#lambda}}FILE{{/lambda}} != {{#lambda}}LINE{{/lambda}}'
expected: '__FILE__ != __LINE__'
@@ -130,10 +139,11 @@ tests:
data:
static: 'static'
lambda: !code
- ruby: 'proc { |text| false }'
- perl: 'sub { 0 }'
- js: 'function(txt) { return false }'
- php: 'return false;'
- python: 'lambda text: 0'
+ ruby: 'proc { |text| false }'
+ perl: 'sub { 0 }'
+ js: 'function(txt) { return false }'
+ php: 'return false;'
+ python: 'lambda text: 0'
+ clojure: '(fn [text] false)'
template: "<{{^lambda}}{{static}}{{/lambda}}>"
expected: "<>"