packages feed

ede 0.2.6 → 0.2.7

raw patch · 66 files changed

+639/−2 lines, 66 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

Files

ede.cabal view
@@ -1,5 +1,5 @@ name:                  ede-version:               0.2.6+version:               0.2.7 synopsis:              Templating language with similar syntax and features to Liquid or Jinja2. homepage:              http://github.com/brendanhay/ede license:               OtherLicense@@ -38,7 +38,12 @@ extra-source-files:     README.md +data-files:+      test/resources/*.ede+    , test/resources/*.golden+ source-repository head+     type:     git     location: git://github.com/brendanhay/ede.git 
test/Main.hs view
@@ -13,6 +13,7 @@ module Main (main) where  import           Control.Applicative+import           Control.Monad import qualified Data.Aeson              as Aeson import           Data.Bifunctor import qualified Data.ByteString         as BS@@ -21,6 +22,7 @@ import           Data.Maybe import qualified Data.Text               as Text import qualified Data.Text.Lazy.Encoding as LText+import           Paths_ede import           System.Directory import           System.IO.Unsafe import           Test.Tasty@@ -31,7 +33,7 @@ main = defaultMain . testGroup "ED-E" $ unsafePerformIO tests  resources :: FilePath-resources = "test/resources/"+resources = unsafePerformIO getDataDir  include :: Resolver IO include = includeFile resources
+ test/resources/binding.ede view
@@ -0,0 +1,10 @@+{}+---+{% let x = 123 %}+  {{ x }}++  {% let y = 321 %}+    {{ x }} + {{ y }} = {{ x + y }}+  {% endlet %}++{% endlet %}
+ test/resources/binding.golden view
@@ -0,0 +1,4 @@+  123++    123 + 321 = 444+
+ test/resources/boolean-conditions.ede view
@@ -0,0 +1,41 @@+{ "yes": "graugh", "no": false }+---+{% if true %}+true+{% endif %}++{% if yes %}+{{ yes }}+{% endif %}++{% if no %}+no+{% endif %}++{% if unknown %}+unknown+{% endif %}++{% if no || true %}+{{ no }} || true+{% endif %}++{% if yes == "graugh" %}+yes == "graugh"+{% endif %}++{% if none1 %}+none1+{% elif none2 %}+none2+{% elif none3 %}+none3+{% else %}+none!+{% endif %}++{% if no %}+no+{% elif yes %}+yes!+{% endif %}
+ test/resources/boolean-conditions.golden view
@@ -0,0 +1,13 @@+true++graugh++++false || true++yes == "graugh"++none!++yes!
+ test/resources/boolean-operands.ede view
@@ -0,0 +1,8 @@+{ "bool": true }+---+{{ !bool }}+{{ !false }}+{{ bool && false }}+{{ true && bool }}+{{ bool || false }}+{{ false || bool }}
+ test/resources/boolean-operands.golden view
@@ -0,0 +1,6 @@+false+true+false+true+true+true
+ test/resources/case.ede view
@@ -0,0 +1,17 @@+{ "var": "BiNGo!" }+---+    {% case var %}+    {% when "other" %}+      "other"+    {% when "BiNGo!" %}+      "BiNGo!"+    {% when "test" %}+      "test"+    {% endcase %}++{% case 2 %}+{% when 3 %}+3+{% else %}+El fino.+{% endcase %}
+ test/resources/case.golden view
@@ -0,0 +1,3 @@+      "BiNGo!"++El fino.
+ test/resources/comments.ede view
@@ -0,0 +1,17 @@+{}+---+{# Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium+   doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore #}+Hi+{# veritatis et quasi architecto beatae vitae dicta sunt explicabo. #}++{# Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit,+sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt.+Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet,+consectetur, adipisci velit, sed quia non numquam eius modi tempora+incidunt ut labore et dolore magnam aliquam quaerat voluptatem.++++#}+Ho
+ test/resources/comments.golden view
@@ -0,0 +1,3 @@+Hi++Ho
+ test/resources/defined.ede view
@@ -0,0 +1,5 @@+{ "map": { "key": 12.31 } }+---+{{ var | defined }}+{{ map.key | defined }}+{{ map.var | defined }}
+ test/resources/defined.golden view
@@ -0,0 +1,3 @@+false+true+false
+ test/resources/empty.ede view
@@ -0,0 +1,2 @@+{}+---
+ test/resources/empty.golden view
+ test/resources/include.ede view
@@ -0,0 +1,6 @@+{ "global": "some_thing" }+---+{% include "include.child1" %}+{% include "include.child2" with binding = "123" %}++     include: {% include "include.child3" %}
+ test/resources/include.golden view
@@ -0,0 +1,5 @@+global: some_thing!+binding: 123!++     include:  some_thing variable :: !Int  +
+ test/resources/list-sorting.ede view
@@ -0,0 +1,9 @@+{+  "single": "Lorem ipsum-Phrase",+  "alpha": ["a", "b", "c", "d", "e"],+  "numeric": [1, 2, 3, 4, 5]+}+---+{{ single | reverse }}+{{ alpha | reverse | show }}+{{ numeric | reverse | show }}
+ test/resources/list-sorting.golden view
@@ -0,0 +1,3 @@+esarhP-muspi meroL+["e","d","c","b","a"]+[5,4,3,2,1]
+ test/resources/list-subdivision.ede view
@@ -0,0 +1,13 @@+{+  "single": "Lorem ipsum-Phrase",+  "multi": "Navzdory všeobecnému\npřesvědčení\nLorem Ipsum není\nnáhodný text.",+  "alpha": ["a", "b", "c", "d", "e"],+  "numeric": [1, 2, 3, 4, 5]+}+---+{{ multi | head }}+{{ alpha | head }}+{{ numeric | init | show }}+{{ alpha | tail | show }}+{{ alpha | last }}+{{ single | splitWords | last }}
+ test/resources/list-subdivision.golden view
@@ -0,0 +1,6 @@+N+a+[1,2,3,4]+["b","c","d","e"]+e+Phrase
+ test/resources/list-transformation.ede view
@@ -0,0 +1,11 @@+{+  "single": "Lorem ipsum-Phrase",+  "alpha": ["a", "b", "c", "d", "e"],+  "numeric": [1, 2, 3, 4, 5]+}+---+{# {{ alpha | zip(numeric) }} #}+{# [{{ alpha | join(", ") }}] #}+{# ({{ numeric | map(toOrdinal) | join(", ") }}) #}+{# {{ numeric | map(toOrdinal) }} #}+{# {{ numeric | filter(>= 3) }} #}
+ test/resources/list-transformation.golden view
+ test/resources/literals.ede view
@@ -0,0 +1,3 @@+{}+---+{{ 1 }} piece of {{ "text" }} expected: {{ true }}
+ test/resources/literals.golden view
@@ -0,0 +1,1 @@+1 piece of text expected: true
+ test/resources/looping.ede view
@@ -0,0 +1,41 @@+{+  "numbers": [1, 2, 3],+  "strings": ["foo", "bar"],+  "indexed": [false, true, false, false],+  "keyed": {+    "a": 1.0,+    "b": 2.0,+    "c": 3.0+  },+  "empty": []+}+---+{% for n in numbers %}+  {{ n.value }}+{% endfor %}++{% for var in strings %}+  {{ var.value }}+{% endfor %}++  {% for var in indexed %}+  {{ var.index }}:{{ var.value }}+  {% endfor %}++{% for var in keyed %}+  {{ var.key }}:{{ var.value }}+{% endfor %}++{% for var in empty %}+  Shit!+{% else %}+  empty+{% endfor %}++{% for item in [1,2,3,4,5] %} {{ item.value }}{% endfor %}++{% for item in {"a": true, "b": false} %}+{{ item.key }} => {{ item.value }}+{% endfor %}++{% for char in "testicles" %}{{ char.value }}{% endfor %}
+ test/resources/looping.golden view
@@ -0,0 +1,24 @@+  1+  2+  3++  foo+  bar++  1:false+  2:true+  3:false+  4:false++  a:1+  b:2+  c:3++  empty++ 1 2 3 4 5++a => true+b => false++testicles
+ test/resources/nesting.ede view
@@ -0,0 +1,13 @@+{+  "list": [+    { "key": "value1", "map": { "nest": 1 } },+    { "key": "value2", "map": { "nest": 2 } }+  ]+}+---+{% for item in list %}+  {{ item.value.key }}+{% if item.value.map %}+    {{ item.value.map.nest }}+{% endif %}+{% endfor %}
+ test/resources/nesting.golden view
@@ -0,0 +1,4 @@+  value1+    1+  value2+    2
+ test/resources/newlines.ede view
@@ -0,0 +1,11 @@+{ "var": "more" }+---+Some text+++More++{{ var }} and ...+++
+ test/resources/newlines.golden view
@@ -0,0 +1,9 @@+Some text+++More++more and ...+++
+ test/resources/null.ede view
@@ -0,0 +1,7 @@+{ "redacted": null }+---+{% if redacted %}+  Predicate/existence check should be false+{% endif %}++nothing to {{ redacted }} see here
+ test/resources/null.golden view
@@ -0,0 +1,2 @@++nothing to  see here
+ test/resources/numbers.ede view
@@ -0,0 +1,11 @@+{+  "double": 1.0567,+  "integral": 492,+  "positive": 10.0,+  "negative": -0.05+}+---+{{ double }}+{{ integral }}+{{ positive }}+{{ negative }}
+ test/resources/numbers.golden view
@@ -0,0 +1,4 @@+1.0567+492+10+-0.05
+ test/resources/polymorphic-show.ede view
@@ -0,0 +1,17 @@+{+  "single": "Lorem ipsum-Phrase",+  "whitespace": "  A Word  ",+  "bool": true,+  "number": 1.0,+  "alpha": ["a", "b", "c", "d", "e"],+  "numeric": [1, 2, 3, 4, 5],+  "object": {"foo": "x", "bar": "y"}+}+---+{{ single | show }}+{{ whitespace | show }}+{{ bool | show }}+{{ number | show }}+{{ alpha | show }}+{{ numeric | show }}+{{ object | show }}
+ test/resources/polymorphic-show.golden view
@@ -0,0 +1,7 @@+"Lorem ipsum-Phrase"+"  A Word  "+true+1.0+["a","b","c","d","e"]+[1,2,3,4,5]+{"foo":"x","bar":"y"}
+ test/resources/raw.ede view
@@ -0,0 +1,10 @@+{}+---+At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium+voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi+sint occaecati cupiditate non provident, similique sunt in culpa qui officia.+{% raw %}+These are {{{ handlebars }}} and {{ mustache }} or {{ jinja2 }} output tags.+{% endraw %}+Deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum+facilis est et expedita distinctio.
+ test/resources/raw.golden view
@@ -0,0 +1,6 @@+At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium+voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi+sint occaecati cupiditate non provident, similique sunt in culpa qui officia.+These are {{{ handlebars }}} and {{ mustache }} or {{ jinja2 }} output tags.+Deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum+facilis est et expedita distinctio.
+ test/resources/relational-conditions.ede view
@@ -0,0 +1,49 @@+{ "one": 1, "ten": 10 }+---+{% if one %}+{{ one }}+{% endif %}++{% if 1 <= 10 %}+1 <= 10+{% else %}+nein. :(+{% endif %}++{% if 8 <= ten %}+8 <= {{ ten }}+{% else %}+oh lordy nein.+{% endif %}++{% if one <= 2 %}+{{ one }} <= 2+{% else %}+ack.+{% endif %}++{% if one == ten %}+No..+{% else %}+{{ one }} != {{ ten }}+{% endif %}++{% if ten != one %}+{{ ten }} != {{ one }}+{% endif %}++{% if ten > one %}+{{ ten }} > {{ one }}+{% endif %}++{% if ten >= ten %}+{{ ten }} >= {{ ten }}+{% endif %}++{% if one <= one %}+{{ one }} <= {{ one }}+{% endif %}++{% if ten == 10 %}+{{ ten }} == 10+{% endif %}
+ test/resources/relational-conditions.golden view
@@ -0,0 +1,19 @@+1++1 <= 10++8 <= 10++1 <= 2++1 != 10++10 != 1++10 > 1++10 >= 10++1 <= 1++10 == 10
+ test/resources/sequence-empty.ede view
@@ -0,0 +1,13 @@+{+  "alpha": ["a", "b", "c", "d", "e"],+  "numeric": [1, 2, 3, 4, 5],+  "object": {"foo": "x", "bar": "y"},+  "nothing": []+}+---+{{ "" | empty }}+{{ "supercalifragilistic" | empty }}+{{ alpha | empty }}+{{ numeric | empty }}+{{ object | empty }}+{{ nothing | empty }}
+ test/resources/sequence-empty.golden view
@@ -0,0 +1,6 @@+true+false+false+false+false+true
+ test/resources/sequence-length.ede view
@@ -0,0 +1,11 @@+{+  "alpha": ["a", "b", "c", "d", "e"],+  "numeric": [1, 2, 3, 4, 5],+  "object": {"foo": "x", "bar": "y"}+}+---+{{ "" | length }}+{{ "123" | length }}+{{ alpha | length }}+{{ numeric | length }}+{{ object | length }}
+ test/resources/sequence-length.golden view
@@ -0,0 +1,5 @@+0+3+5+5+2
+ test/resources/single-line.ede view
@@ -0,0 +1,11 @@+{+  "var": true,+  "list": [1,2,3,4,5]+}+---+{% if var %}this is a piece of text on a single line{% endif %}++    {% if var %} this is a piece of text on a single line {% endif %}    ++  {% for n in list %}{{ n.value }}{% if !n.last %},{% endif %}{% endfor %}+
+ test/resources/single-line.golden view
@@ -0,0 +1,6 @@+this is a piece of text on a single line++     this is a piece of text on a single line     ++  1,2,3,4,5+
+ test/resources/syntax.ede view
@@ -0,0 +1,12 @@+{ "var": 12 }+---+{! EDE_SYNTAX pragma=("{*", "*}") inline=("#@", "@#") !}+{* EDE_SYNTAX block=("#[", "]#")  *}+{! EDE_SYNTAX inline=("{{", "}}") !}++  #@ var @#+    {{ var }}++  {% for nothing in var %}+    {{ var }}+  {% endfor %}
+ test/resources/syntax.golden view
@@ -0,0 +1,8 @@+{! EDE_SYNTAX inline=("{{", "}}") !}++  12+    {{ var }}++  {% for nothing in var %}+    {{ var }}+  {% endfor %}
+ test/resources/text-casing.ede view
@@ -0,0 +1,20 @@+{+  "single": "Lorem ipsum-Phrase",+  "number": 1.0+}+---+{{ single | lowerHead }}+{{ single | upperHead }}+{{ single | toLower }}+{{ single | toUpper }}+{{ single | toTitle }}+{{ single | toCamel }}+{{ single | toPascal }}+{{ single | toSnake }}+{{ single | toSpinal }}+{{ single | toTrain }}+{{ number | toOrdinal }}+{{ single | toLower | upperHead }}+{% if (single | toLower) == "lorem ipsum-phrase" %}+single | lower == "lorem ipsum"+{% endif %}
+ test/resources/text-casing.golden view
@@ -0,0 +1,13 @@+lorem ipsum-Phrase+Lorem ipsum-Phrase+lorem ipsum-phrase+LOREM IPSUM-PHRASE+Lorem Ipsum Phrase+loremIpsumPhrase+LoremIpsumPhrase+lorem_ipsum_phrase+lorem-ipsum-phrase+Lorem-Ipsum-Phrase+1st+Lorem ipsum-phrase+single | lower == "lorem ipsum"
+ test/resources/text-ellipsis.ede view
@@ -0,0 +1,10 @@+{+  "short": "short-text",+  "long": "A slightly longer piece of text that would like to be truncated."+}+---+{{ short | toEllipsis(5) }}+{{ short | toEllipsisWith(2, "0xb") }}+{{ long | toEllipsis(20) }}+{{ long | toEllipsisWith(20, " -") }}+{{ long | toEllipsis(255) }}
+ test/resources/text-ellipsis.golden view
@@ -0,0 +1,5 @@+short...+sh0xb+A slightly longer pi...+A slightly longer pi -+A slightly longer piece of text that would like to be truncated.
+ test/resources/text-indentation.ede view
@@ -0,0 +1,10 @@+{+  "single": "lorem",+  "pad": 12+}+---+{{ single | justifyLeft(25) }}+{{ single | justifyRight(15) }}+{{ single | center(9) }}+{{ single | justifyLeft(pad) }}+{{ single | justifyRight(pad) }}
+ test/resources/text-indentation.golden view
@@ -0,0 +1,5 @@+lorem                    +          lorem+  lorem  +lorem       +       lorem
+ test/resources/text-substitution.ede view
@@ -0,0 +1,11 @@+{ "single": "Lorem ipsum-Phrase" }+---+{{ single | takeWord }}+{{ single | dropWord }}+{{ single | dropUpper }}+{{ single | toCamel| dropLower }}+{{ single | stripPrefix("Lorem ") }}+{{ single | stripSuffix("Phrase") }}+{{ single | replace("ipsum-", "Hi! ") }}+{{ single | remove(" ipsum-") }}+{{ single | remove("e") }}
+ test/resources/text-substitution.golden view
@@ -0,0 +1,9 @@+Lorem+ipsum-Phrase+orem ipsum-Phrase+IpsumPhrase+ipsum-Phrase+Lorem ipsum-+Hi! +LoremPhrase+Lorm ipsum-Phras
+ test/resources/text-whitespace.ede view
@@ -0,0 +1,5 @@+{ "whitespace": "  A Word  " }+---+{{ whitespace | strip }}+{{ whitespace | stripStart }}+{{ whitespace | stripEnd }}
+ test/resources/text-whitespace.golden view
@@ -0,0 +1,3 @@+A Word+A Word  +  A Word
+ test/resources/text.ede view
@@ -0,0 +1,3 @@+{}+---+Nothing to see here, move along
+ test/resources/text.golden view
@@ -0,0 +1,1 @@+Nothing to see here, move along
+ test/resources/variables.ede view
@@ -0,0 +1,8 @@+{ "string": "World", "integer": 1, "double": 3.25000, "bool": false, "map": { "key1": "value1", "key2": { "key3": "value2" } } }+---+Hello, {{ string }}!++{{ integer }} + {{ double }} > 5 is {{ bool }}++{{ map.key1 }}+{{ map.key2.key3 }}
+ test/resources/variables.golden view
@@ -0,0 +1,6 @@+Hello, World!++1 + 3.25 > 5 is false++value1+value2
+ test/resources/whitespace.ede view
@@ -0,0 +1,15 @@+{ "var": "test" }+---+ +   {{ var }}   ++      +   ++  ++   {% if var %}    +       {{ var }}  +   {% endif %} +  +
+ test/resources/whitespace.golden view
@@ -0,0 +1,11 @@+ +   test   ++      +   ++  ++       test  +  +