New modules.
This commit is contained in:
Vendored
+13
@@ -0,0 +1,13 @@
|
||||
// retoor <retoor@molodetz.nl>
|
||||
|
||||
import "jinja" for Environment, DictLoader
|
||||
|
||||
var env = Environment.new(DictLoader.new({
|
||||
"simple": "before{# comment #}after",
|
||||
"multiword": "a{# this is a comment #}b",
|
||||
"with_tags": "x{# {{ ignored }} #}y"
|
||||
}))
|
||||
|
||||
System.print(env.getTemplate("simple").render({})) // expect: beforeafter
|
||||
System.print(env.getTemplate("multiword").render({})) // expect: ab
|
||||
System.print(env.getTemplate("with_tags").render({})) // expect: xy
|
||||
Vendored
+32
@@ -0,0 +1,32 @@
|
||||
// retoor <retoor@molodetz.nl>
|
||||
|
||||
import "jinja" for Environment, DictLoader
|
||||
|
||||
var env = Environment.new(DictLoader.new({
|
||||
"if_true": "{\% if show \%}visible{\% endif \%}",
|
||||
"if_false": "{\% if hide \%}visible{\% endif \%}",
|
||||
"if_else": "{\% if show \%}yes{\% else \%}no{\% endif \%}",
|
||||
"if_elif": "{\% if x == 1 \%}one{\% elif x == 2 \%}two{\% else \%}other{\% endif \%}",
|
||||
"compare": "{\% if a > b \%}greater{\% elif a < b \%}less{\% else \%}equal{\% endif \%}",
|
||||
"and_or": "{\% if a and b \%}both{\% elif a or b \%}one{\% else \%}none{\% endif \%}",
|
||||
"not": "{\% if not hidden \%}shown{\% endif \%}",
|
||||
"in_list": "{\% if item in items \%}found{\% else \%}missing{\% endif \%}",
|
||||
"is_even": "{\% if num is even \%}even{\% else \%}odd{\% endif \%}",
|
||||
"is_defined": "{\% if var is defined \%}defined{\% else \%}undefined{\% endif \%}",
|
||||
"is_not": "{\% if num is not odd \%}not odd{\% endif \%}",
|
||||
"ternary": "{{ \"yes\" if show else \"no\" }}"
|
||||
}))
|
||||
|
||||
System.print(env.getTemplate("if_true").render({"show": true})) // expect: visible
|
||||
System.print(env.getTemplate("if_false").render({"hide": false})) // expect:
|
||||
System.print(env.getTemplate("if_else").render({"show": false})) // expect: no
|
||||
System.print(env.getTemplate("if_elif").render({"x": 2})) // expect: two
|
||||
System.print(env.getTemplate("compare").render({"a": 5, "b": 3})) // expect: greater
|
||||
System.print(env.getTemplate("and_or").render({"a": true, "b": false})) // expect: one
|
||||
System.print(env.getTemplate("not").render({"hidden": false})) // expect: shown
|
||||
System.print(env.getTemplate("in_list").render({"item": "b", "items": ["a", "b", "c"]})) // expect: found
|
||||
System.print(env.getTemplate("is_even").render({"num": 4})) // expect: even
|
||||
System.print(env.getTemplate("is_defined").render({"var": "something"})) // expect: defined
|
||||
System.print(env.getTemplate("is_defined").render({})) // expect: undefined
|
||||
System.print(env.getTemplate("is_not").render({"num": 4})) // expect: not odd
|
||||
System.print(env.getTemplate("ternary").render({"show": true})) // expect: yes
|
||||
Vendored
+35
@@ -0,0 +1,35 @@
|
||||
// retoor <retoor@molodetz.nl>
|
||||
|
||||
import "jinja" for Environment, DictLoader
|
||||
|
||||
var env = Environment.new(DictLoader.new({
|
||||
"math": "{{ 2 + 3 * 4 }}",
|
||||
"paren": "{{ (2 + 3) * 4 }}",
|
||||
"mod": "{{ 10 \% 3 }}",
|
||||
"div": "{{ 10 / 4 }}",
|
||||
"neg": "{{ -5 }}",
|
||||
"compare_chain": "{\% if 1 < 2 and 2 < 3 \%}yes{\% endif \%}",
|
||||
"bool_and": "{{ true and false }}",
|
||||
"bool_or": "{{ true or false }}",
|
||||
"bool_not": "{{ not false }}",
|
||||
"string_in": "{\% if \"b\" in \"abc\" \%}found{\% endif \%}",
|
||||
"list_in": "{\% if 2 in [1, 2, 3] \%}found{\% endif \%}",
|
||||
"nested_access": "{{ data.items[0].name }}",
|
||||
"filter_chain": "{{ text|trim|upper }}",
|
||||
"method_call": "{{ items|join(\", \")|upper }}"
|
||||
}))
|
||||
|
||||
System.print(env.getTemplate("math").render({})) // expect: 14
|
||||
System.print(env.getTemplate("paren").render({})) // expect: 20
|
||||
System.print(env.getTemplate("mod").render({})) // expect: 1
|
||||
System.print(env.getTemplate("div").render({})) // expect: 2.5
|
||||
System.print(env.getTemplate("neg").render({})) // expect: -5
|
||||
System.print(env.getTemplate("compare_chain").render({})) // expect: yes
|
||||
System.print(env.getTemplate("bool_and").render({})) // expect: false
|
||||
System.print(env.getTemplate("bool_or").render({})) // expect: true
|
||||
System.print(env.getTemplate("bool_not").render({})) // expect: true
|
||||
System.print(env.getTemplate("string_in").render({})) // expect: found
|
||||
System.print(env.getTemplate("list_in").render({})) // expect: found
|
||||
System.print(env.getTemplate("nested_access").render({"data": {"items": [{"name": "test"}]}})) // expect: test
|
||||
System.print(env.getTemplate("filter_chain").render({"text": " hello "})) // expect: HELLO
|
||||
System.print(env.getTemplate("method_call").render({"items": ["a", "b", "c"]})) // expect: A, B, C
|
||||
Vendored
+63
@@ -0,0 +1,63 @@
|
||||
// retoor <retoor@molodetz.nl>
|
||||
|
||||
import "jinja" for Environment, DictLoader
|
||||
|
||||
var env = Environment.new(DictLoader.new({
|
||||
"upper": "{{ text|upper }}",
|
||||
"lower": "{{ text|lower }}",
|
||||
"capitalize": "{{ text|capitalize }}",
|
||||
"title": "{{ text|title }}",
|
||||
"trim": "[{{ text|trim }}]",
|
||||
"length": "{{ items|length }}",
|
||||
"first": "{{ items|first }}",
|
||||
"last": "{{ items|last }}",
|
||||
"reverse": "{{ items|reverse|join }}",
|
||||
"sort": "{{ items|sort|join(\", \") }}",
|
||||
"join": "{{ items|join(\"-\") }}",
|
||||
"default": "{{ missing|default(\"N/A\") }}",
|
||||
"int": "{{ num|int }}",
|
||||
"abs": "{{ num|abs }}",
|
||||
"round": "{{ num|round(2) }}",
|
||||
"replace": "{{ text|replace(\"o\", \"0\") }}",
|
||||
"truncate": "{{ text|truncate(10) }}",
|
||||
"batch": "{\% for row in items|batch(2) \%}[{\% for i in row \%}{{ i }}{\% endfor \%}]{\% endfor \%}",
|
||||
"unique": "{{ items|unique|join }}",
|
||||
"sum": "{{ nums|sum }}",
|
||||
"min": "{{ nums|min }}",
|
||||
"max": "{{ nums|max }}",
|
||||
"striptags": "{{ html|striptags }}",
|
||||
"urlencode": "{{ text|urlencode }}",
|
||||
"wordcount": "{{ text|wordcount }}",
|
||||
"center": "[{{ text|center(10) }}]",
|
||||
"indent": "{{ text|indent(4) }}",
|
||||
"tojson": "{{ data|tojson }}"
|
||||
}))
|
||||
|
||||
System.print(env.getTemplate("upper").render({"text": "hello"})) // expect: HELLO
|
||||
System.print(env.getTemplate("lower").render({"text": "HELLO"})) // expect: hello
|
||||
System.print(env.getTemplate("capitalize").render({"text": "hello world"})) // expect: Hello world
|
||||
System.print(env.getTemplate("title").render({"text": "hello world"})) // expect: Hello World
|
||||
System.print(env.getTemplate("trim").render({"text": " hi "})) // expect: [hi]
|
||||
System.print(env.getTemplate("length").render({"items": [1, 2, 3]})) // expect: 3
|
||||
System.print(env.getTemplate("first").render({"items": ["a", "b", "c"]})) // expect: a
|
||||
System.print(env.getTemplate("last").render({"items": ["a", "b", "c"]})) // expect: c
|
||||
System.print(env.getTemplate("reverse").render({"items": ["a", "b", "c"]})) // expect: cba
|
||||
System.print(env.getTemplate("sort").render({"items": ["c", "a", "b"]})) // expect: a, b, c
|
||||
System.print(env.getTemplate("join").render({"items": ["a", "b", "c"]})) // expect: a-b-c
|
||||
System.print(env.getTemplate("default").render({})) // expect: N/A
|
||||
System.print(env.getTemplate("int").render({"num": 3.7})) // expect: 3
|
||||
System.print(env.getTemplate("abs").render({"num": -5})) // expect: 5
|
||||
System.print(env.getTemplate("round").render({"num": 3.14159})) // expect: 3.14
|
||||
System.print(env.getTemplate("replace").render({"text": "hello"})) // expect: hell0
|
||||
System.print(env.getTemplate("truncate").render({"text": "hello world this is long"})) // expect: hello...
|
||||
System.print(env.getTemplate("batch").render({"items": [1, 2, 3, 4]})) // expect: [12][34]
|
||||
System.print(env.getTemplate("unique").render({"items": ["a", "b", "a", "c"]})) // expect: abc
|
||||
System.print(env.getTemplate("sum").render({"nums": [1, 2, 3, 4]})) // expect: 10
|
||||
System.print(env.getTemplate("min").render({"nums": [3, 1, 4, 1, 5]})) // expect: 1
|
||||
System.print(env.getTemplate("max").render({"nums": [3, 1, 4, 1, 5]})) // expect: 5
|
||||
System.print(env.getTemplate("striptags").render({"html": "<p>text</p>"})) // expect: text
|
||||
System.print(env.getTemplate("urlencode").render({"text": "hello world"})) // expect: hello+world
|
||||
System.print(env.getTemplate("wordcount").render({"text": "one two three"})) // expect: 3
|
||||
System.print(env.getTemplate("center").render({"text": "hi"})) // expect: [ hi ]
|
||||
System.print(env.getTemplate("indent").render({"text": "line"})) // expect: line
|
||||
System.print(env.getTemplate("tojson").render({"data": {"a": 1}})) // expect: {"a": 1}
|
||||
Vendored
+14
@@ -0,0 +1,14 @@
|
||||
// retoor <retoor@molodetz.nl>
|
||||
|
||||
import "jinja" for Environment, DictLoader
|
||||
|
||||
var env = Environment.new(DictLoader.new({
|
||||
"header": "<header>{{ title }}</header>",
|
||||
"main": "{\% include \"header\" \%}content",
|
||||
"with_ctx": "{\% include \"header\" with context \%}",
|
||||
"without_ctx": "{\% include \"header\" without context \%}"
|
||||
}))
|
||||
|
||||
System.print(env.getTemplate("main").render({"title": "Hello"})) // expect: <header>Hello</header>content
|
||||
System.print(env.getTemplate("with_ctx").render({"title": "Test"})) // expect: <header>Test</header>
|
||||
System.print(env.getTemplate("without_ctx").render({"title": "Test"})) // expect: <header></header>
|
||||
Vendored
+22
@@ -0,0 +1,22 @@
|
||||
// retoor <retoor@molodetz.nl>
|
||||
|
||||
import "jinja" for Environment, DictLoader
|
||||
|
||||
var env = Environment.new(DictLoader.new({
|
||||
"base": "[{\% block content \%}BASE{\% endblock \%}]",
|
||||
"child": "{\% extends \"base\" \%}{\% block content \%}CHILD{\% endblock \%}",
|
||||
"multi_block_base": "A:{\% block a \%}a{\% endblock \%} B:{\% block b \%}b{\% endblock \%}",
|
||||
"multi_block_child": "{\% extends \"multi_block_base\" \%}{\% block a \%}A{\% endblock \%}",
|
||||
"grandparent": "[{\% block x \%}GP{\% endblock \%}]",
|
||||
"parent": "{\% extends \"grandparent\" \%}{\% block x \%}P{\% endblock \%}",
|
||||
"grandchild": "{\% extends \"parent\" \%}{\% block x \%}GC{\% endblock \%}",
|
||||
"super_base": "[{\% block s \%}BASE{\% endblock \%}]",
|
||||
"super_child": "{\% extends \"super_base\" \%}{\% block s \%}{{ super() }}+CHILD{\% endblock \%}"
|
||||
}))
|
||||
|
||||
System.print(env.getTemplate("base").render({})) // expect: [BASE]
|
||||
System.print(env.getTemplate("child").render({})) // expect: [CHILD]
|
||||
System.print(env.getTemplate("multi_block_base").render({})) // expect: A:a B:b
|
||||
System.print(env.getTemplate("multi_block_child").render({})) // expect: A:A B:b
|
||||
System.print(env.getTemplate("grandchild").render({})) // expect: [GC]
|
||||
System.print(env.getTemplate("super_child").render({})) // expect: [BASE+CHILD]
|
||||
Vendored
+31
@@ -0,0 +1,31 @@
|
||||
// retoor <retoor@molodetz.nl>
|
||||
|
||||
import "jinja" for Environment, DictLoader
|
||||
|
||||
var env = Environment.new(DictLoader.new({
|
||||
"basic": "{\% for item in items \%}{{ item }}{\% endfor \%}",
|
||||
"with_sep": "{\% for item in items \%}{{ item }}{\% if not loop.last \%}, {\% endif \%}{\% endfor \%}",
|
||||
"index": "{\% for item in items \%}{{ loop.index }}:{{ item }}{\% if not loop.last \%} {\% endif \%}{\% endfor \%}",
|
||||
"index0": "{\% for item in items \%}{{ loop.index0 }}:{{ item }}{\% if not loop.last \%} {\% endif \%}{\% endfor \%}",
|
||||
"first_last": "{\% for item in items \%}{\% if loop.first \%}[{\% endif \%}{{ item }}{\% if loop.last \%}]{\% endif \%}{\% endfor \%}",
|
||||
"length": "{\% for item in items \%}{{ loop.length }}{\% endfor \%}",
|
||||
"else_empty": "{\% for item in items \%}{{ item }}{\% else \%}empty{\% endfor \%}",
|
||||
"nested": "{\% for row in matrix \%}{\% for col in row \%}{{ col }}{\% endfor \%};{\% endfor \%}",
|
||||
"dict": "{\% for key, value in data \%}{{ key }}={{ value }}{\% if not loop.last \%} {\% endif \%}{\% endfor \%}",
|
||||
"range": "{\% for i in range(3) \%}{{ i }}{\% endfor \%}",
|
||||
"range_start": "{\% for i in range(1, 4) \%}{{ i }}{\% endfor \%}",
|
||||
"string": "{\% for c in text \%}{{ c }}-{\% endfor \%}"
|
||||
}))
|
||||
|
||||
System.print(env.getTemplate("basic").render({"items": ["a", "b", "c"]})) // expect: abc
|
||||
System.print(env.getTemplate("with_sep").render({"items": ["a", "b", "c"]})) // expect: a, b, c
|
||||
System.print(env.getTemplate("index").render({"items": ["a", "b"]})) // expect: 1:a 2:b
|
||||
System.print(env.getTemplate("index0").render({"items": ["a", "b"]})) // expect: 0:a 1:b
|
||||
System.print(env.getTemplate("first_last").render({"items": ["a", "b", "c"]})) // expect: [abc]
|
||||
System.print(env.getTemplate("length").render({"items": ["a", "b", "c"]})) // expect: 333
|
||||
System.print(env.getTemplate("else_empty").render({"items": []})) // expect: empty
|
||||
System.print(env.getTemplate("nested").render({"matrix": [[1, 2], [3, 4]]})) // expect: 12;34;
|
||||
System.print(env.getTemplate("dict").render({"data": {"b": 2}})) // expect: b=2
|
||||
System.print(env.getTemplate("range").render({})) // expect: 012
|
||||
System.print(env.getTemplate("range_start").render({})) // expect: 123
|
||||
System.print(env.getTemplate("string").render({"text": "hi"})) // expect: h-i-
|
||||
Vendored
+15
@@ -0,0 +1,15 @@
|
||||
// retoor <retoor@molodetz.nl>
|
||||
|
||||
import "jinja" for Environment, DictLoader
|
||||
|
||||
var env = Environment.new(DictLoader.new({
|
||||
"simple": "{\% macro greet(name) \%}Hello {{ name }}!{\% endmacro \%}{{ greet(\"World\") }}",
|
||||
"with_default": "{\% macro greet(name, greeting=\"Hi\") \%}{{ greeting }} {{ name }}!{\% endmacro \%}{{ greet(\"Bob\") }}",
|
||||
"multiple_calls": "{\% macro item(x) \%}[{{ x }}]{\% endmacro \%}{{ item(1) }}{{ item(2) }}{{ item(3) }}",
|
||||
"with_loop": "{\% macro items(list) \%}{\% for i in list \%}{{ i }}{\% endfor \%}{\% endmacro \%}{{ items([1, 2, 3]) }}"
|
||||
}))
|
||||
|
||||
System.print(env.getTemplate("simple").render({})) // expect: Hello World!
|
||||
System.print(env.getTemplate("with_default").render({})) // expect: Hi Bob!
|
||||
System.print(env.getTemplate("multiple_calls").render({})) // expect: [1][2][3]
|
||||
System.print(env.getTemplate("with_loop").render({})) // expect: 123
|
||||
Vendored
+11
@@ -0,0 +1,11 @@
|
||||
// retoor <retoor@molodetz.nl>
|
||||
|
||||
import "jinja" for Environment, DictLoader
|
||||
|
||||
var env = Environment.new(DictLoader.new({
|
||||
"raw_var": "{\% raw \%}{{ not_parsed }}{\% endraw \%}",
|
||||
"raw_block": "{\% raw \%}{\% if true \%}nope{\% endif \%}{\% endraw \%}"
|
||||
}))
|
||||
|
||||
System.print(env.getTemplate("raw_var").render({})) // expect: {{ not_parsed }}
|
||||
System.print(env.getTemplate("raw_block").render({})) // expect: {% if true %}nope{% endif %}
|
||||
Vendored
+15
@@ -0,0 +1,15 @@
|
||||
// retoor <retoor@molodetz.nl>
|
||||
|
||||
import "jinja" for Environment, DictLoader
|
||||
|
||||
var env = Environment.new(DictLoader.new({
|
||||
"set_simple": "{\% set x = 5 \%}{{ x }}",
|
||||
"set_expr": "{\% set y = 2 + 3 \%}{{ y }}",
|
||||
"set_from_var": "{\% set z = a + b \%}{{ z }}",
|
||||
"set_string": "{\% set msg = \"hello\" \%}{{ msg|upper }}"
|
||||
}))
|
||||
|
||||
System.print(env.getTemplate("set_simple").render({})) // expect: 5
|
||||
System.print(env.getTemplate("set_expr").render({})) // expect: 5
|
||||
System.print(env.getTemplate("set_from_var").render({"a": 10, "b": 20})) // expect: 30
|
||||
System.print(env.getTemplate("set_string").render({})) // expect: HELLO
|
||||
Vendored
+29
@@ -0,0 +1,29 @@
|
||||
// retoor <retoor@molodetz.nl>
|
||||
|
||||
import "jinja" for Environment, DictLoader
|
||||
|
||||
var env = Environment.new(DictLoader.new({
|
||||
"simple": "Hello {{ name }}!",
|
||||
"escaped": "{{ html }}",
|
||||
"safe": "{{ html|safe }}",
|
||||
"nested": "{{ user.name }} is {{ user.age }}",
|
||||
"subscript": "{{ items[0] }} and {{ items[1] }}",
|
||||
"literal_str": "{{ \"literal\" }}",
|
||||
"literal_num": "{{ 42 }}",
|
||||
"literal_bool": "{{ true }}",
|
||||
"literal_list": "{{ [1, 2, 3]|join(\", \") }}",
|
||||
"default": "{{ missing|default(\"fallback\") }}",
|
||||
"concat": "{{ a ~ b }}"
|
||||
}))
|
||||
|
||||
System.print(env.getTemplate("simple").render({"name": "World"})) // expect: Hello World!
|
||||
System.print(env.getTemplate("escaped").render({"html": "<b>bold</b>"})) // expect: <b>bold</b>
|
||||
System.print(env.getTemplate("safe").render({"html": "<b>bold</b>"})) // expect: <b>bold</b>
|
||||
System.print(env.getTemplate("nested").render({"user": {"name": "Alice", "age": 30}})) // expect: Alice is 30
|
||||
System.print(env.getTemplate("subscript").render({"items": ["first", "second", "third"]})) // expect: first and second
|
||||
System.print(env.getTemplate("literal_str").render({})) // expect: literal
|
||||
System.print(env.getTemplate("literal_num").render({})) // expect: 42
|
||||
System.print(env.getTemplate("literal_bool").render({})) // expect: true
|
||||
System.print(env.getTemplate("literal_list").render({})) // expect: 1, 2, 3
|
||||
System.print(env.getTemplate("default").render({})) // expect: fallback
|
||||
System.print(env.getTemplate("concat").render({"a": "Hello", "b": "World"})) // expect: HelloWorld
|
||||
Vendored
+15
@@ -0,0 +1,15 @@
|
||||
// retoor <retoor@molodetz.nl>
|
||||
|
||||
import "jinja" for Environment, DictLoader
|
||||
|
||||
var env = Environment.new(DictLoader.new({
|
||||
"trim_left": "x {{- y }}",
|
||||
"trim_right": "{{ y -}} x",
|
||||
"trim_both": "x {{- y -}} x",
|
||||
"block_trim": "x {\%- if true \%}y{\% endif -\%} x"
|
||||
}))
|
||||
|
||||
System.print(env.getTemplate("trim_left").render({"y": "Y"})) // expect: xY
|
||||
System.print(env.getTemplate("trim_right").render({"y": "Y"})) // expect: Yx
|
||||
System.print(env.getTemplate("trim_both").render({"y": "Y"})) // expect: xYx
|
||||
System.print(env.getTemplate("block_trim").render({})) // expect: xyx
|
||||
Reference in New Issue
Block a user