Merge branch 'filters' into render
This commit is contained in:
commit
f16c3a4fa1
13
js/test_cases/filters/README.md
Normal file
13
js/test_cases/filters/README.md
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
HTML Escaping
|
||||||
|
-------------
|
||||||
|
|
||||||
|
Dust automatically applies the `|h` filter to html escape unless `|s` is applied to disable automatic html escaping. It seems that if you manually specify `|h` and `|s` in the same filter, then it still html escapes, so my theory on the logic is:
|
||||||
|
|
||||||
|
Iterate over all filters
|
||||||
|
If `|s` is not present append `|h`, otherwise, leave filters as-in
|
||||||
|
During render, `|s` does nothing, so we can just remove it on the dust side to prevent confusion.
|
||||||
|
|
||||||
|
Quoting
|
||||||
|
-------
|
||||||
|
|
||||||
|
Oddly enough, `boolean|j|js` gets no quotes (meaning `boolean|j` remains a boolean) but `boolean|h|js` does get quotes (meaning that `boolean|h` becomes a string)
|
15
js/test_cases/filters/input1.json
Normal file
15
js/test_cases/filters/input1.json
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"string": "{\"foo\": \"bar\"}",
|
||||||
|
"integer": 4,
|
||||||
|
"float": 7.4,
|
||||||
|
"boolean": true,
|
||||||
|
"null": null,
|
||||||
|
"array": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
],
|
||||||
|
"object": {
|
||||||
|
"foo": "bar"
|
||||||
|
},
|
||||||
|
"special_characters": "<>xx\b&\"'\t\f\n\r\\!@#$%^&*()[]{}<>,./?:;_-+=`"
|
||||||
|
}
|
40
js/test_cases/filters/main.dust
Normal file
40
js/test_cases/filters/main.dust
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
Special characters: {special_characters}{~n}
|
||||||
|
Special characters html escaping disabled: {special_characters|s}{~n}
|
||||||
|
Special characters html escaping disabled and enabled: {special_characters|s|h}{~n}
|
||||||
|
Special characters html escaping enabled and disabled: {special_characters|h|s}{~n}
|
||||||
|
Special characters html escaped once: {special_characters|h}{~n}
|
||||||
|
Special characters html escaped twice: {special_characters|h|h}{~n}
|
||||||
|
|
||||||
|
|
||||||
|
Object string parsed: {string|jp}{~n}
|
||||||
|
Object string parsed and stringified: {string|jp|js}{~n}
|
||||||
|
Object string stringified and parsed: {string|js|jp}{~n}
|
||||||
|
|
||||||
|
Array: {array}{~n}
|
||||||
|
Array stringified: {array|js}{~n}
|
||||||
|
Array stringified and parsed: {array|js|jp}{~n}
|
||||||
|
|
||||||
|
Object: {object}{~n}
|
||||||
|
Object html escaped: {object|h}{~n}
|
||||||
|
Object html escaping disabled: {object|s}{~n}
|
||||||
|
Object stringified: {object|js}{~n}
|
||||||
|
Object stringified and parsed: {object|js|jp}{~n}
|
||||||
|
Object stringified, html escaping disabled, parsed, stringified, and html escaped: {object|js|s|jp|js|h}{~n}
|
||||||
|
|
||||||
|
Special characters: {special_characters}{~n}
|
||||||
|
Special characters html escaping disabled and javascript escaped: {special_characters|s|j}{~n}
|
||||||
|
Special characters javascript escaped and html escaping disabled: {special_characters|j|s}{~n}
|
||||||
|
Special characters javascript escaped once: {special_characters|j}{~n}
|
||||||
|
Special characters javascript escaped twice: {special_characters|j|j}{~n}
|
||||||
|
|
||||||
|
Special characters: {special_characters}{~n}
|
||||||
|
Special characters html escaping disabled and encodeURI: {special_characters|s|u}{~n}
|
||||||
|
Special characters encodeURI and html escaping disabled: {special_characters|u|s}{~n}
|
||||||
|
Special characters encodeURI once: {special_characters|u}{~n}
|
||||||
|
Special characters encodeURI twice: {special_characters|u|u}{~n}
|
||||||
|
|
||||||
|
Special characters: {special_characters}{~n}
|
||||||
|
Special characters html escaping disabled and encodeURIComponent: {special_characters|s|uc}{~n}
|
||||||
|
Special characters encodeURIComponent and html escaping disabled: {special_characters|uc|s}{~n}
|
||||||
|
Special characters encodeURIComponent once: {special_characters|uc}{~n}
|
||||||
|
Special characters encodeURIComponent twice: {special_characters|uc|uc}{~n}
|
6
js/test_cases/generated_filters/array.json
Normal file
6
js/test_cases/generated_filters/array.json
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"name": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
|
}
|
3
js/test_cases/generated_filters/boolean.json
Normal file
3
js/test_cases/generated_filters/boolean.json
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"name": true
|
||||||
|
}
|
3
js/test_cases/generated_filters/float.json
Normal file
3
js/test_cases/generated_filters/float.json
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"name": 7.4
|
||||||
|
}
|
3
js/test_cases/generated_filters/integer.json
Normal file
3
js/test_cases/generated_filters/integer.json
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"name": 4
|
||||||
|
}
|
517
js/test_cases/generated_filters/main.dust
Normal file
517
js/test_cases/generated_filters/main.dust
Normal file
@ -0,0 +1,517 @@
|
|||||||
|
Hello {name}!{~n}
|
||||||
|
Hello {name|s}!{~n}
|
||||||
|
Hello {name|h}!{~n}
|
||||||
|
Hello {name|j}!{~n}
|
||||||
|
Hello {name|u}!{~n}
|
||||||
|
Hello {name|uc}!{~n}
|
||||||
|
Hello {name|js}!{~n}
|
||||||
|
Hello {name|s|h}!{~n}
|
||||||
|
Hello {name|s|j}!{~n}
|
||||||
|
Hello {name|s|u}!{~n}
|
||||||
|
Hello {name|s|uc}!{~n}
|
||||||
|
Hello {name|s|js}!{~n}
|
||||||
|
Hello {name|h|s}!{~n}
|
||||||
|
Hello {name|h|j}!{~n}
|
||||||
|
Hello {name|h|u}!{~n}
|
||||||
|
Hello {name|h|uc}!{~n}
|
||||||
|
Hello {name|h|js}!{~n}
|
||||||
|
Hello {name|j|s}!{~n}
|
||||||
|
Hello {name|j|h}!{~n}
|
||||||
|
Hello {name|j|u}!{~n}
|
||||||
|
Hello {name|j|uc}!{~n}
|
||||||
|
Hello {name|j|js}!{~n}
|
||||||
|
Hello {name|u|s}!{~n}
|
||||||
|
Hello {name|u|h}!{~n}
|
||||||
|
Hello {name|u|j}!{~n}
|
||||||
|
Hello {name|u|uc}!{~n}
|
||||||
|
Hello {name|u|js}!{~n}
|
||||||
|
Hello {name|uc|s}!{~n}
|
||||||
|
Hello {name|uc|h}!{~n}
|
||||||
|
Hello {name|uc|j}!{~n}
|
||||||
|
Hello {name|uc|u}!{~n}
|
||||||
|
Hello {name|uc|js}!{~n}
|
||||||
|
Hello {name|js|s}!{~n}
|
||||||
|
Hello {name|js|h}!{~n}
|
||||||
|
Hello {name|js|j}!{~n}
|
||||||
|
Hello {name|js|u}!{~n}
|
||||||
|
Hello {name|js|uc}!{~n}
|
||||||
|
Hello {name|s|h|j}!{~n}
|
||||||
|
Hello {name|s|h|u}!{~n}
|
||||||
|
Hello {name|s|h|uc}!{~n}
|
||||||
|
Hello {name|s|h|js}!{~n}
|
||||||
|
Hello {name|s|j|h}!{~n}
|
||||||
|
Hello {name|s|j|u}!{~n}
|
||||||
|
Hello {name|s|j|uc}!{~n}
|
||||||
|
Hello {name|s|j|js}!{~n}
|
||||||
|
Hello {name|s|u|h}!{~n}
|
||||||
|
Hello {name|s|u|j}!{~n}
|
||||||
|
Hello {name|s|u|uc}!{~n}
|
||||||
|
Hello {name|s|u|js}!{~n}
|
||||||
|
Hello {name|s|uc|h}!{~n}
|
||||||
|
Hello {name|s|uc|j}!{~n}
|
||||||
|
Hello {name|s|uc|u}!{~n}
|
||||||
|
Hello {name|s|uc|js}!{~n}
|
||||||
|
Hello {name|s|js|h}!{~n}
|
||||||
|
Hello {name|s|js|j}!{~n}
|
||||||
|
Hello {name|s|js|u}!{~n}
|
||||||
|
Hello {name|s|js|uc}!{~n}
|
||||||
|
Hello {name|h|s|j}!{~n}
|
||||||
|
Hello {name|h|s|u}!{~n}
|
||||||
|
Hello {name|h|s|uc}!{~n}
|
||||||
|
Hello {name|h|s|js}!{~n}
|
||||||
|
Hello {name|h|j|s}!{~n}
|
||||||
|
Hello {name|h|j|u}!{~n}
|
||||||
|
Hello {name|h|j|uc}!{~n}
|
||||||
|
Hello {name|h|j|js}!{~n}
|
||||||
|
Hello {name|h|u|s}!{~n}
|
||||||
|
Hello {name|h|u|j}!{~n}
|
||||||
|
Hello {name|h|u|uc}!{~n}
|
||||||
|
Hello {name|h|u|js}!{~n}
|
||||||
|
Hello {name|h|uc|s}!{~n}
|
||||||
|
Hello {name|h|uc|j}!{~n}
|
||||||
|
Hello {name|h|uc|u}!{~n}
|
||||||
|
Hello {name|h|uc|js}!{~n}
|
||||||
|
Hello {name|h|js|s}!{~n}
|
||||||
|
Hello {name|h|js|j}!{~n}
|
||||||
|
Hello {name|h|js|u}!{~n}
|
||||||
|
Hello {name|h|js|uc}!{~n}
|
||||||
|
Hello {name|j|s|h}!{~n}
|
||||||
|
Hello {name|j|s|u}!{~n}
|
||||||
|
Hello {name|j|s|uc}!{~n}
|
||||||
|
Hello {name|j|s|js}!{~n}
|
||||||
|
Hello {name|j|h|s}!{~n}
|
||||||
|
Hello {name|j|h|u}!{~n}
|
||||||
|
Hello {name|j|h|uc}!{~n}
|
||||||
|
Hello {name|j|h|js}!{~n}
|
||||||
|
Hello {name|j|u|s}!{~n}
|
||||||
|
Hello {name|j|u|h}!{~n}
|
||||||
|
Hello {name|j|u|uc}!{~n}
|
||||||
|
Hello {name|j|u|js}!{~n}
|
||||||
|
Hello {name|j|uc|s}!{~n}
|
||||||
|
Hello {name|j|uc|h}!{~n}
|
||||||
|
Hello {name|j|uc|u}!{~n}
|
||||||
|
Hello {name|j|uc|js}!{~n}
|
||||||
|
Hello {name|j|js|s}!{~n}
|
||||||
|
Hello {name|j|js|h}!{~n}
|
||||||
|
Hello {name|j|js|u}!{~n}
|
||||||
|
Hello {name|j|js|uc}!{~n}
|
||||||
|
Hello {name|u|s|h}!{~n}
|
||||||
|
Hello {name|u|s|j}!{~n}
|
||||||
|
Hello {name|u|s|uc}!{~n}
|
||||||
|
Hello {name|u|s|js}!{~n}
|
||||||
|
Hello {name|u|h|s}!{~n}
|
||||||
|
Hello {name|u|h|j}!{~n}
|
||||||
|
Hello {name|u|h|uc}!{~n}
|
||||||
|
Hello {name|u|h|js}!{~n}
|
||||||
|
Hello {name|u|j|s}!{~n}
|
||||||
|
Hello {name|u|j|h}!{~n}
|
||||||
|
Hello {name|u|j|uc}!{~n}
|
||||||
|
Hello {name|u|j|js}!{~n}
|
||||||
|
Hello {name|u|uc|s}!{~n}
|
||||||
|
Hello {name|u|uc|h}!{~n}
|
||||||
|
Hello {name|u|uc|j}!{~n}
|
||||||
|
Hello {name|u|uc|js}!{~n}
|
||||||
|
Hello {name|u|js|s}!{~n}
|
||||||
|
Hello {name|u|js|h}!{~n}
|
||||||
|
Hello {name|u|js|j}!{~n}
|
||||||
|
Hello {name|u|js|uc}!{~n}
|
||||||
|
Hello {name|uc|s|h}!{~n}
|
||||||
|
Hello {name|uc|s|j}!{~n}
|
||||||
|
Hello {name|uc|s|u}!{~n}
|
||||||
|
Hello {name|uc|s|js}!{~n}
|
||||||
|
Hello {name|uc|h|s}!{~n}
|
||||||
|
Hello {name|uc|h|j}!{~n}
|
||||||
|
Hello {name|uc|h|u}!{~n}
|
||||||
|
Hello {name|uc|h|js}!{~n}
|
||||||
|
Hello {name|uc|j|s}!{~n}
|
||||||
|
Hello {name|uc|j|h}!{~n}
|
||||||
|
Hello {name|uc|j|u}!{~n}
|
||||||
|
Hello {name|uc|j|js}!{~n}
|
||||||
|
Hello {name|uc|u|s}!{~n}
|
||||||
|
Hello {name|uc|u|h}!{~n}
|
||||||
|
Hello {name|uc|u|j}!{~n}
|
||||||
|
Hello {name|uc|u|js}!{~n}
|
||||||
|
Hello {name|uc|js|s}!{~n}
|
||||||
|
Hello {name|uc|js|h}!{~n}
|
||||||
|
Hello {name|uc|js|j}!{~n}
|
||||||
|
Hello {name|uc|js|u}!{~n}
|
||||||
|
Hello {name|js|s|h}!{~n}
|
||||||
|
Hello {name|js|s|j}!{~n}
|
||||||
|
Hello {name|js|s|u}!{~n}
|
||||||
|
Hello {name|js|s|uc}!{~n}
|
||||||
|
Hello {name|js|h|s}!{~n}
|
||||||
|
Hello {name|js|h|j}!{~n}
|
||||||
|
Hello {name|js|h|u}!{~n}
|
||||||
|
Hello {name|js|h|uc}!{~n}
|
||||||
|
Hello {name|js|j|s}!{~n}
|
||||||
|
Hello {name|js|j|h}!{~n}
|
||||||
|
Hello {name|js|j|u}!{~n}
|
||||||
|
Hello {name|js|j|uc}!{~n}
|
||||||
|
Hello {name|js|u|s}!{~n}
|
||||||
|
Hello {name|js|u|h}!{~n}
|
||||||
|
Hello {name|js|u|j}!{~n}
|
||||||
|
Hello {name|js|u|uc}!{~n}
|
||||||
|
Hello {name|js|uc|s}!{~n}
|
||||||
|
Hello {name|js|uc|h}!{~n}
|
||||||
|
Hello {name|js|uc|j}!{~n}
|
||||||
|
Hello {name|js|uc|u}!{~n}
|
||||||
|
Hello {name|s|h|j|u}!{~n}
|
||||||
|
Hello {name|s|h|j|uc}!{~n}
|
||||||
|
Hello {name|s|h|j|js}!{~n}
|
||||||
|
Hello {name|s|h|u|j}!{~n}
|
||||||
|
Hello {name|s|h|u|uc}!{~n}
|
||||||
|
Hello {name|s|h|u|js}!{~n}
|
||||||
|
Hello {name|s|h|uc|j}!{~n}
|
||||||
|
Hello {name|s|h|uc|u}!{~n}
|
||||||
|
Hello {name|s|h|uc|js}!{~n}
|
||||||
|
Hello {name|s|h|js|j}!{~n}
|
||||||
|
Hello {name|s|h|js|u}!{~n}
|
||||||
|
Hello {name|s|h|js|uc}!{~n}
|
||||||
|
Hello {name|s|j|h|u}!{~n}
|
||||||
|
Hello {name|s|j|h|uc}!{~n}
|
||||||
|
Hello {name|s|j|h|js}!{~n}
|
||||||
|
Hello {name|s|j|u|h}!{~n}
|
||||||
|
Hello {name|s|j|u|uc}!{~n}
|
||||||
|
Hello {name|s|j|u|js}!{~n}
|
||||||
|
Hello {name|s|j|uc|h}!{~n}
|
||||||
|
Hello {name|s|j|uc|u}!{~n}
|
||||||
|
Hello {name|s|j|uc|js}!{~n}
|
||||||
|
Hello {name|s|j|js|h}!{~n}
|
||||||
|
Hello {name|s|j|js|u}!{~n}
|
||||||
|
Hello {name|s|j|js|uc}!{~n}
|
||||||
|
Hello {name|s|u|h|j}!{~n}
|
||||||
|
Hello {name|s|u|h|uc}!{~n}
|
||||||
|
Hello {name|s|u|h|js}!{~n}
|
||||||
|
Hello {name|s|u|j|h}!{~n}
|
||||||
|
Hello {name|s|u|j|uc}!{~n}
|
||||||
|
Hello {name|s|u|j|js}!{~n}
|
||||||
|
Hello {name|s|u|uc|h}!{~n}
|
||||||
|
Hello {name|s|u|uc|j}!{~n}
|
||||||
|
Hello {name|s|u|uc|js}!{~n}
|
||||||
|
Hello {name|s|u|js|h}!{~n}
|
||||||
|
Hello {name|s|u|js|j}!{~n}
|
||||||
|
Hello {name|s|u|js|uc}!{~n}
|
||||||
|
Hello {name|s|uc|h|j}!{~n}
|
||||||
|
Hello {name|s|uc|h|u}!{~n}
|
||||||
|
Hello {name|s|uc|h|js}!{~n}
|
||||||
|
Hello {name|s|uc|j|h}!{~n}
|
||||||
|
Hello {name|s|uc|j|u}!{~n}
|
||||||
|
Hello {name|s|uc|j|js}!{~n}
|
||||||
|
Hello {name|s|uc|u|h}!{~n}
|
||||||
|
Hello {name|s|uc|u|j}!{~n}
|
||||||
|
Hello {name|s|uc|u|js}!{~n}
|
||||||
|
Hello {name|s|uc|js|h}!{~n}
|
||||||
|
Hello {name|s|uc|js|j}!{~n}
|
||||||
|
Hello {name|s|uc|js|u}!{~n}
|
||||||
|
Hello {name|s|js|h|j}!{~n}
|
||||||
|
Hello {name|s|js|h|u}!{~n}
|
||||||
|
Hello {name|s|js|h|uc}!{~n}
|
||||||
|
Hello {name|s|js|j|h}!{~n}
|
||||||
|
Hello {name|s|js|j|u}!{~n}
|
||||||
|
Hello {name|s|js|j|uc}!{~n}
|
||||||
|
Hello {name|s|js|u|h}!{~n}
|
||||||
|
Hello {name|s|js|u|j}!{~n}
|
||||||
|
Hello {name|s|js|u|uc}!{~n}
|
||||||
|
Hello {name|s|js|uc|h}!{~n}
|
||||||
|
Hello {name|s|js|uc|j}!{~n}
|
||||||
|
Hello {name|s|js|uc|u}!{~n}
|
||||||
|
Hello {name|h|s|j|u}!{~n}
|
||||||
|
Hello {name|h|s|j|uc}!{~n}
|
||||||
|
Hello {name|h|s|j|js}!{~n}
|
||||||
|
Hello {name|h|s|u|j}!{~n}
|
||||||
|
Hello {name|h|s|u|uc}!{~n}
|
||||||
|
Hello {name|h|s|u|js}!{~n}
|
||||||
|
Hello {name|h|s|uc|j}!{~n}
|
||||||
|
Hello {name|h|s|uc|u}!{~n}
|
||||||
|
Hello {name|h|s|uc|js}!{~n}
|
||||||
|
Hello {name|h|s|js|j}!{~n}
|
||||||
|
Hello {name|h|s|js|u}!{~n}
|
||||||
|
Hello {name|h|s|js|uc}!{~n}
|
||||||
|
Hello {name|h|j|s|u}!{~n}
|
||||||
|
Hello {name|h|j|s|uc}!{~n}
|
||||||
|
Hello {name|h|j|s|js}!{~n}
|
||||||
|
Hello {name|h|j|u|s}!{~n}
|
||||||
|
Hello {name|h|j|u|uc}!{~n}
|
||||||
|
Hello {name|h|j|u|js}!{~n}
|
||||||
|
Hello {name|h|j|uc|s}!{~n}
|
||||||
|
Hello {name|h|j|uc|u}!{~n}
|
||||||
|
Hello {name|h|j|uc|js}!{~n}
|
||||||
|
Hello {name|h|j|js|s}!{~n}
|
||||||
|
Hello {name|h|j|js|u}!{~n}
|
||||||
|
Hello {name|h|j|js|uc}!{~n}
|
||||||
|
Hello {name|h|u|s|j}!{~n}
|
||||||
|
Hello {name|h|u|s|uc}!{~n}
|
||||||
|
Hello {name|h|u|s|js}!{~n}
|
||||||
|
Hello {name|h|u|j|s}!{~n}
|
||||||
|
Hello {name|h|u|j|uc}!{~n}
|
||||||
|
Hello {name|h|u|j|js}!{~n}
|
||||||
|
Hello {name|h|u|uc|s}!{~n}
|
||||||
|
Hello {name|h|u|uc|j}!{~n}
|
||||||
|
Hello {name|h|u|uc|js}!{~n}
|
||||||
|
Hello {name|h|u|js|s}!{~n}
|
||||||
|
Hello {name|h|u|js|j}!{~n}
|
||||||
|
Hello {name|h|u|js|uc}!{~n}
|
||||||
|
Hello {name|h|uc|s|j}!{~n}
|
||||||
|
Hello {name|h|uc|s|u}!{~n}
|
||||||
|
Hello {name|h|uc|s|js}!{~n}
|
||||||
|
Hello {name|h|uc|j|s}!{~n}
|
||||||
|
Hello {name|h|uc|j|u}!{~n}
|
||||||
|
Hello {name|h|uc|j|js}!{~n}
|
||||||
|
Hello {name|h|uc|u|s}!{~n}
|
||||||
|
Hello {name|h|uc|u|j}!{~n}
|
||||||
|
Hello {name|h|uc|u|js}!{~n}
|
||||||
|
Hello {name|h|uc|js|s}!{~n}
|
||||||
|
Hello {name|h|uc|js|j}!{~n}
|
||||||
|
Hello {name|h|uc|js|u}!{~n}
|
||||||
|
Hello {name|h|js|s|j}!{~n}
|
||||||
|
Hello {name|h|js|s|u}!{~n}
|
||||||
|
Hello {name|h|js|s|uc}!{~n}
|
||||||
|
Hello {name|h|js|j|s}!{~n}
|
||||||
|
Hello {name|h|js|j|u}!{~n}
|
||||||
|
Hello {name|h|js|j|uc}!{~n}
|
||||||
|
Hello {name|h|js|u|s}!{~n}
|
||||||
|
Hello {name|h|js|u|j}!{~n}
|
||||||
|
Hello {name|h|js|u|uc}!{~n}
|
||||||
|
Hello {name|h|js|uc|s}!{~n}
|
||||||
|
Hello {name|h|js|uc|j}!{~n}
|
||||||
|
Hello {name|h|js|uc|u}!{~n}
|
||||||
|
Hello {name|j|s|h|u}!{~n}
|
||||||
|
Hello {name|j|s|h|uc}!{~n}
|
||||||
|
Hello {name|j|s|h|js}!{~n}
|
||||||
|
Hello {name|j|s|u|h}!{~n}
|
||||||
|
Hello {name|j|s|u|uc}!{~n}
|
||||||
|
Hello {name|j|s|u|js}!{~n}
|
||||||
|
Hello {name|j|s|uc|h}!{~n}
|
||||||
|
Hello {name|j|s|uc|u}!{~n}
|
||||||
|
Hello {name|j|s|uc|js}!{~n}
|
||||||
|
Hello {name|j|s|js|h}!{~n}
|
||||||
|
Hello {name|j|s|js|u}!{~n}
|
||||||
|
Hello {name|j|s|js|uc}!{~n}
|
||||||
|
Hello {name|j|h|s|u}!{~n}
|
||||||
|
Hello {name|j|h|s|uc}!{~n}
|
||||||
|
Hello {name|j|h|s|js}!{~n}
|
||||||
|
Hello {name|j|h|u|s}!{~n}
|
||||||
|
Hello {name|j|h|u|uc}!{~n}
|
||||||
|
Hello {name|j|h|u|js}!{~n}
|
||||||
|
Hello {name|j|h|uc|s}!{~n}
|
||||||
|
Hello {name|j|h|uc|u}!{~n}
|
||||||
|
Hello {name|j|h|uc|js}!{~n}
|
||||||
|
Hello {name|j|h|js|s}!{~n}
|
||||||
|
Hello {name|j|h|js|u}!{~n}
|
||||||
|
Hello {name|j|h|js|uc}!{~n}
|
||||||
|
Hello {name|j|u|s|h}!{~n}
|
||||||
|
Hello {name|j|u|s|uc}!{~n}
|
||||||
|
Hello {name|j|u|s|js}!{~n}
|
||||||
|
Hello {name|j|u|h|s}!{~n}
|
||||||
|
Hello {name|j|u|h|uc}!{~n}
|
||||||
|
Hello {name|j|u|h|js}!{~n}
|
||||||
|
Hello {name|j|u|uc|s}!{~n}
|
||||||
|
Hello {name|j|u|uc|h}!{~n}
|
||||||
|
Hello {name|j|u|uc|js}!{~n}
|
||||||
|
Hello {name|j|u|js|s}!{~n}
|
||||||
|
Hello {name|j|u|js|h}!{~n}
|
||||||
|
Hello {name|j|u|js|uc}!{~n}
|
||||||
|
Hello {name|j|uc|s|h}!{~n}
|
||||||
|
Hello {name|j|uc|s|u}!{~n}
|
||||||
|
Hello {name|j|uc|s|js}!{~n}
|
||||||
|
Hello {name|j|uc|h|s}!{~n}
|
||||||
|
Hello {name|j|uc|h|u}!{~n}
|
||||||
|
Hello {name|j|uc|h|js}!{~n}
|
||||||
|
Hello {name|j|uc|u|s}!{~n}
|
||||||
|
Hello {name|j|uc|u|h}!{~n}
|
||||||
|
Hello {name|j|uc|u|js}!{~n}
|
||||||
|
Hello {name|j|uc|js|s}!{~n}
|
||||||
|
Hello {name|j|uc|js|h}!{~n}
|
||||||
|
Hello {name|j|uc|js|u}!{~n}
|
||||||
|
Hello {name|j|js|s|h}!{~n}
|
||||||
|
Hello {name|j|js|s|u}!{~n}
|
||||||
|
Hello {name|j|js|s|uc}!{~n}
|
||||||
|
Hello {name|j|js|h|s}!{~n}
|
||||||
|
Hello {name|j|js|h|u}!{~n}
|
||||||
|
Hello {name|j|js|h|uc}!{~n}
|
||||||
|
Hello {name|j|js|u|s}!{~n}
|
||||||
|
Hello {name|j|js|u|h}!{~n}
|
||||||
|
Hello {name|j|js|u|uc}!{~n}
|
||||||
|
Hello {name|j|js|uc|s}!{~n}
|
||||||
|
Hello {name|j|js|uc|h}!{~n}
|
||||||
|
Hello {name|j|js|uc|u}!{~n}
|
||||||
|
Hello {name|u|s|h|j}!{~n}
|
||||||
|
Hello {name|u|s|h|uc}!{~n}
|
||||||
|
Hello {name|u|s|h|js}!{~n}
|
||||||
|
Hello {name|u|s|j|h}!{~n}
|
||||||
|
Hello {name|u|s|j|uc}!{~n}
|
||||||
|
Hello {name|u|s|j|js}!{~n}
|
||||||
|
Hello {name|u|s|uc|h}!{~n}
|
||||||
|
Hello {name|u|s|uc|j}!{~n}
|
||||||
|
Hello {name|u|s|uc|js}!{~n}
|
||||||
|
Hello {name|u|s|js|h}!{~n}
|
||||||
|
Hello {name|u|s|js|j}!{~n}
|
||||||
|
Hello {name|u|s|js|uc}!{~n}
|
||||||
|
Hello {name|u|h|s|j}!{~n}
|
||||||
|
Hello {name|u|h|s|uc}!{~n}
|
||||||
|
Hello {name|u|h|s|js}!{~n}
|
||||||
|
Hello {name|u|h|j|s}!{~n}
|
||||||
|
Hello {name|u|h|j|uc}!{~n}
|
||||||
|
Hello {name|u|h|j|js}!{~n}
|
||||||
|
Hello {name|u|h|uc|s}!{~n}
|
||||||
|
Hello {name|u|h|uc|j}!{~n}
|
||||||
|
Hello {name|u|h|uc|js}!{~n}
|
||||||
|
Hello {name|u|h|js|s}!{~n}
|
||||||
|
Hello {name|u|h|js|j}!{~n}
|
||||||
|
Hello {name|u|h|js|uc}!{~n}
|
||||||
|
Hello {name|u|j|s|h}!{~n}
|
||||||
|
Hello {name|u|j|s|uc}!{~n}
|
||||||
|
Hello {name|u|j|s|js}!{~n}
|
||||||
|
Hello {name|u|j|h|s}!{~n}
|
||||||
|
Hello {name|u|j|h|uc}!{~n}
|
||||||
|
Hello {name|u|j|h|js}!{~n}
|
||||||
|
Hello {name|u|j|uc|s}!{~n}
|
||||||
|
Hello {name|u|j|uc|h}!{~n}
|
||||||
|
Hello {name|u|j|uc|js}!{~n}
|
||||||
|
Hello {name|u|j|js|s}!{~n}
|
||||||
|
Hello {name|u|j|js|h}!{~n}
|
||||||
|
Hello {name|u|j|js|uc}!{~n}
|
||||||
|
Hello {name|u|uc|s|h}!{~n}
|
||||||
|
Hello {name|u|uc|s|j}!{~n}
|
||||||
|
Hello {name|u|uc|s|js}!{~n}
|
||||||
|
Hello {name|u|uc|h|s}!{~n}
|
||||||
|
Hello {name|u|uc|h|j}!{~n}
|
||||||
|
Hello {name|u|uc|h|js}!{~n}
|
||||||
|
Hello {name|u|uc|j|s}!{~n}
|
||||||
|
Hello {name|u|uc|j|h}!{~n}
|
||||||
|
Hello {name|u|uc|j|js}!{~n}
|
||||||
|
Hello {name|u|uc|js|s}!{~n}
|
||||||
|
Hello {name|u|uc|js|h}!{~n}
|
||||||
|
Hello {name|u|uc|js|j}!{~n}
|
||||||
|
Hello {name|u|js|s|h}!{~n}
|
||||||
|
Hello {name|u|js|s|j}!{~n}
|
||||||
|
Hello {name|u|js|s|uc}!{~n}
|
||||||
|
Hello {name|u|js|h|s}!{~n}
|
||||||
|
Hello {name|u|js|h|j}!{~n}
|
||||||
|
Hello {name|u|js|h|uc}!{~n}
|
||||||
|
Hello {name|u|js|j|s}!{~n}
|
||||||
|
Hello {name|u|js|j|h}!{~n}
|
||||||
|
Hello {name|u|js|j|uc}!{~n}
|
||||||
|
Hello {name|u|js|uc|s}!{~n}
|
||||||
|
Hello {name|u|js|uc|h}!{~n}
|
||||||
|
Hello {name|u|js|uc|j}!{~n}
|
||||||
|
Hello {name|uc|s|h|j}!{~n}
|
||||||
|
Hello {name|uc|s|h|u}!{~n}
|
||||||
|
Hello {name|uc|s|h|js}!{~n}
|
||||||
|
Hello {name|uc|s|j|h}!{~n}
|
||||||
|
Hello {name|uc|s|j|u}!{~n}
|
||||||
|
Hello {name|uc|s|j|js}!{~n}
|
||||||
|
Hello {name|uc|s|u|h}!{~n}
|
||||||
|
Hello {name|uc|s|u|j}!{~n}
|
||||||
|
Hello {name|uc|s|u|js}!{~n}
|
||||||
|
Hello {name|uc|s|js|h}!{~n}
|
||||||
|
Hello {name|uc|s|js|j}!{~n}
|
||||||
|
Hello {name|uc|s|js|u}!{~n}
|
||||||
|
Hello {name|uc|h|s|j}!{~n}
|
||||||
|
Hello {name|uc|h|s|u}!{~n}
|
||||||
|
Hello {name|uc|h|s|js}!{~n}
|
||||||
|
Hello {name|uc|h|j|s}!{~n}
|
||||||
|
Hello {name|uc|h|j|u}!{~n}
|
||||||
|
Hello {name|uc|h|j|js}!{~n}
|
||||||
|
Hello {name|uc|h|u|s}!{~n}
|
||||||
|
Hello {name|uc|h|u|j}!{~n}
|
||||||
|
Hello {name|uc|h|u|js}!{~n}
|
||||||
|
Hello {name|uc|h|js|s}!{~n}
|
||||||
|
Hello {name|uc|h|js|j}!{~n}
|
||||||
|
Hello {name|uc|h|js|u}!{~n}
|
||||||
|
Hello {name|uc|j|s|h}!{~n}
|
||||||
|
Hello {name|uc|j|s|u}!{~n}
|
||||||
|
Hello {name|uc|j|s|js}!{~n}
|
||||||
|
Hello {name|uc|j|h|s}!{~n}
|
||||||
|
Hello {name|uc|j|h|u}!{~n}
|
||||||
|
Hello {name|uc|j|h|js}!{~n}
|
||||||
|
Hello {name|uc|j|u|s}!{~n}
|
||||||
|
Hello {name|uc|j|u|h}!{~n}
|
||||||
|
Hello {name|uc|j|u|js}!{~n}
|
||||||
|
Hello {name|uc|j|js|s}!{~n}
|
||||||
|
Hello {name|uc|j|js|h}!{~n}
|
||||||
|
Hello {name|uc|j|js|u}!{~n}
|
||||||
|
Hello {name|uc|u|s|h}!{~n}
|
||||||
|
Hello {name|uc|u|s|j}!{~n}
|
||||||
|
Hello {name|uc|u|s|js}!{~n}
|
||||||
|
Hello {name|uc|u|h|s}!{~n}
|
||||||
|
Hello {name|uc|u|h|j}!{~n}
|
||||||
|
Hello {name|uc|u|h|js}!{~n}
|
||||||
|
Hello {name|uc|u|j|s}!{~n}
|
||||||
|
Hello {name|uc|u|j|h}!{~n}
|
||||||
|
Hello {name|uc|u|j|js}!{~n}
|
||||||
|
Hello {name|uc|u|js|s}!{~n}
|
||||||
|
Hello {name|uc|u|js|h}!{~n}
|
||||||
|
Hello {name|uc|u|js|j}!{~n}
|
||||||
|
Hello {name|uc|js|s|h}!{~n}
|
||||||
|
Hello {name|uc|js|s|j}!{~n}
|
||||||
|
Hello {name|uc|js|s|u}!{~n}
|
||||||
|
Hello {name|uc|js|h|s}!{~n}
|
||||||
|
Hello {name|uc|js|h|j}!{~n}
|
||||||
|
Hello {name|uc|js|h|u}!{~n}
|
||||||
|
Hello {name|uc|js|j|s}!{~n}
|
||||||
|
Hello {name|uc|js|j|h}!{~n}
|
||||||
|
Hello {name|uc|js|j|u}!{~n}
|
||||||
|
Hello {name|uc|js|u|s}!{~n}
|
||||||
|
Hello {name|uc|js|u|h}!{~n}
|
||||||
|
Hello {name|uc|js|u|j}!{~n}
|
||||||
|
Hello {name|js|s|h|j}!{~n}
|
||||||
|
Hello {name|js|s|h|u}!{~n}
|
||||||
|
Hello {name|js|s|h|uc}!{~n}
|
||||||
|
Hello {name|js|s|j|h}!{~n}
|
||||||
|
Hello {name|js|s|j|u}!{~n}
|
||||||
|
Hello {name|js|s|j|uc}!{~n}
|
||||||
|
Hello {name|js|s|u|h}!{~n}
|
||||||
|
Hello {name|js|s|u|j}!{~n}
|
||||||
|
Hello {name|js|s|u|uc}!{~n}
|
||||||
|
Hello {name|js|s|uc|h}!{~n}
|
||||||
|
Hello {name|js|s|uc|j}!{~n}
|
||||||
|
Hello {name|js|s|uc|u}!{~n}
|
||||||
|
Hello {name|js|h|s|j}!{~n}
|
||||||
|
Hello {name|js|h|s|u}!{~n}
|
||||||
|
Hello {name|js|h|s|uc}!{~n}
|
||||||
|
Hello {name|js|h|j|s}!{~n}
|
||||||
|
Hello {name|js|h|j|u}!{~n}
|
||||||
|
Hello {name|js|h|j|uc}!{~n}
|
||||||
|
Hello {name|js|h|u|s}!{~n}
|
||||||
|
Hello {name|js|h|u|j}!{~n}
|
||||||
|
Hello {name|js|h|u|uc}!{~n}
|
||||||
|
Hello {name|js|h|uc|s}!{~n}
|
||||||
|
Hello {name|js|h|uc|j}!{~n}
|
||||||
|
Hello {name|js|h|uc|u}!{~n}
|
||||||
|
Hello {name|js|j|s|h}!{~n}
|
||||||
|
Hello {name|js|j|s|u}!{~n}
|
||||||
|
Hello {name|js|j|s|uc}!{~n}
|
||||||
|
Hello {name|js|j|h|s}!{~n}
|
||||||
|
Hello {name|js|j|h|u}!{~n}
|
||||||
|
Hello {name|js|j|h|uc}!{~n}
|
||||||
|
Hello {name|js|j|u|s}!{~n}
|
||||||
|
Hello {name|js|j|u|h}!{~n}
|
||||||
|
Hello {name|js|j|u|uc}!{~n}
|
||||||
|
Hello {name|js|j|uc|s}!{~n}
|
||||||
|
Hello {name|js|j|uc|h}!{~n}
|
||||||
|
Hello {name|js|j|uc|u}!{~n}
|
||||||
|
Hello {name|js|u|s|h}!{~n}
|
||||||
|
Hello {name|js|u|s|j}!{~n}
|
||||||
|
Hello {name|js|u|s|uc}!{~n}
|
||||||
|
Hello {name|js|u|h|s}!{~n}
|
||||||
|
Hello {name|js|u|h|j}!{~n}
|
||||||
|
Hello {name|js|u|h|uc}!{~n}
|
||||||
|
Hello {name|js|u|j|s}!{~n}
|
||||||
|
Hello {name|js|u|j|h}!{~n}
|
||||||
|
Hello {name|js|u|j|uc}!{~n}
|
||||||
|
Hello {name|js|u|uc|s}!{~n}
|
||||||
|
Hello {name|js|u|uc|h}!{~n}
|
||||||
|
Hello {name|js|u|uc|j}!{~n}
|
||||||
|
Hello {name|js|uc|s|h}!{~n}
|
||||||
|
Hello {name|js|uc|s|j}!{~n}
|
||||||
|
Hello {name|js|uc|s|u}!{~n}
|
||||||
|
Hello {name|js|uc|h|s}!{~n}
|
||||||
|
Hello {name|js|uc|h|j}!{~n}
|
||||||
|
Hello {name|js|uc|h|u}!{~n}
|
||||||
|
Hello {name|js|uc|j|s}!{~n}
|
||||||
|
Hello {name|js|uc|j|h}!{~n}
|
||||||
|
Hello {name|js|uc|j|u}!{~n}
|
||||||
|
Hello {name|js|uc|u|s}!{~n}
|
||||||
|
Hello {name|js|uc|u|h}!{~n}
|
||||||
|
Hello {name|js|uc|u|j}!{~n}
|
3
js/test_cases/generated_filters/null.json
Normal file
3
js/test_cases/generated_filters/null.json
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"name": null
|
||||||
|
}
|
5
js/test_cases/generated_filters/object.json
Normal file
5
js/test_cases/generated_filters/object.json
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"name": {
|
||||||
|
"foo": "bar"
|
||||||
|
}
|
||||||
|
}
|
3
js/test_cases/generated_filters/string.json
Normal file
3
js/test_cases/generated_filters/string.json
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"name": "{\"foo\": \"bar\"}"
|
||||||
|
}
|
1
js/test_cases/generated_filters_two/README.md
Normal file
1
js/test_cases/generated_filters_two/README.md
Normal file
@ -0,0 +1 @@
|
|||||||
|
I had to split the generated_filters test into two tests because dustjs is limited to 65536 characters of output (a shortcoming duster will not have).
|
6
js/test_cases/generated_filters_two/array.json
Normal file
6
js/test_cases/generated_filters_two/array.json
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"name": [
|
||||||
|
"foo",
|
||||||
|
"bar"
|
||||||
|
]
|
||||||
|
}
|
3
js/test_cases/generated_filters_two/boolean.json
Normal file
3
js/test_cases/generated_filters_two/boolean.json
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"name": true
|
||||||
|
}
|
3
js/test_cases/generated_filters_two/float.json
Normal file
3
js/test_cases/generated_filters_two/float.json
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"name": 7.4
|
||||||
|
}
|
3
js/test_cases/generated_filters_two/integer.json
Normal file
3
js/test_cases/generated_filters_two/integer.json
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"name": 4
|
||||||
|
}
|
720
js/test_cases/generated_filters_two/main.dust
Normal file
720
js/test_cases/generated_filters_two/main.dust
Normal file
@ -0,0 +1,720 @@
|
|||||||
|
Hello {name|s|h|j|u|uc}!{~n}
|
||||||
|
Hello {name|s|h|j|u|js}!{~n}
|
||||||
|
Hello {name|s|h|j|uc|u}!{~n}
|
||||||
|
Hello {name|s|h|j|uc|js}!{~n}
|
||||||
|
Hello {name|s|h|j|js|u}!{~n}
|
||||||
|
Hello {name|s|h|j|js|uc}!{~n}
|
||||||
|
Hello {name|s|h|u|j|uc}!{~n}
|
||||||
|
Hello {name|s|h|u|j|js}!{~n}
|
||||||
|
Hello {name|s|h|u|uc|j}!{~n}
|
||||||
|
Hello {name|s|h|u|uc|js}!{~n}
|
||||||
|
Hello {name|s|h|u|js|j}!{~n}
|
||||||
|
Hello {name|s|h|u|js|uc}!{~n}
|
||||||
|
Hello {name|s|h|uc|j|u}!{~n}
|
||||||
|
Hello {name|s|h|uc|j|js}!{~n}
|
||||||
|
Hello {name|s|h|uc|u|j}!{~n}
|
||||||
|
Hello {name|s|h|uc|u|js}!{~n}
|
||||||
|
Hello {name|s|h|uc|js|j}!{~n}
|
||||||
|
Hello {name|s|h|uc|js|u}!{~n}
|
||||||
|
Hello {name|s|h|js|j|u}!{~n}
|
||||||
|
Hello {name|s|h|js|j|uc}!{~n}
|
||||||
|
Hello {name|s|h|js|u|j}!{~n}
|
||||||
|
Hello {name|s|h|js|u|uc}!{~n}
|
||||||
|
Hello {name|s|h|js|uc|j}!{~n}
|
||||||
|
Hello {name|s|h|js|uc|u}!{~n}
|
||||||
|
Hello {name|s|j|h|u|uc}!{~n}
|
||||||
|
Hello {name|s|j|h|u|js}!{~n}
|
||||||
|
Hello {name|s|j|h|uc|u}!{~n}
|
||||||
|
Hello {name|s|j|h|uc|js}!{~n}
|
||||||
|
Hello {name|s|j|h|js|u}!{~n}
|
||||||
|
Hello {name|s|j|h|js|uc}!{~n}
|
||||||
|
Hello {name|s|j|u|h|uc}!{~n}
|
||||||
|
Hello {name|s|j|u|h|js}!{~n}
|
||||||
|
Hello {name|s|j|u|uc|h}!{~n}
|
||||||
|
Hello {name|s|j|u|uc|js}!{~n}
|
||||||
|
Hello {name|s|j|u|js|h}!{~n}
|
||||||
|
Hello {name|s|j|u|js|uc}!{~n}
|
||||||
|
Hello {name|s|j|uc|h|u}!{~n}
|
||||||
|
Hello {name|s|j|uc|h|js}!{~n}
|
||||||
|
Hello {name|s|j|uc|u|h}!{~n}
|
||||||
|
Hello {name|s|j|uc|u|js}!{~n}
|
||||||
|
Hello {name|s|j|uc|js|h}!{~n}
|
||||||
|
Hello {name|s|j|uc|js|u}!{~n}
|
||||||
|
Hello {name|s|j|js|h|u}!{~n}
|
||||||
|
Hello {name|s|j|js|h|uc}!{~n}
|
||||||
|
Hello {name|s|j|js|u|h}!{~n}
|
||||||
|
Hello {name|s|j|js|u|uc}!{~n}
|
||||||
|
Hello {name|s|j|js|uc|h}!{~n}
|
||||||
|
Hello {name|s|j|js|uc|u}!{~n}
|
||||||
|
Hello {name|s|u|h|j|uc}!{~n}
|
||||||
|
Hello {name|s|u|h|j|js}!{~n}
|
||||||
|
Hello {name|s|u|h|uc|j}!{~n}
|
||||||
|
Hello {name|s|u|h|uc|js}!{~n}
|
||||||
|
Hello {name|s|u|h|js|j}!{~n}
|
||||||
|
Hello {name|s|u|h|js|uc}!{~n}
|
||||||
|
Hello {name|s|u|j|h|uc}!{~n}
|
||||||
|
Hello {name|s|u|j|h|js}!{~n}
|
||||||
|
Hello {name|s|u|j|uc|h}!{~n}
|
||||||
|
Hello {name|s|u|j|uc|js}!{~n}
|
||||||
|
Hello {name|s|u|j|js|h}!{~n}
|
||||||
|
Hello {name|s|u|j|js|uc}!{~n}
|
||||||
|
Hello {name|s|u|uc|h|j}!{~n}
|
||||||
|
Hello {name|s|u|uc|h|js}!{~n}
|
||||||
|
Hello {name|s|u|uc|j|h}!{~n}
|
||||||
|
Hello {name|s|u|uc|j|js}!{~n}
|
||||||
|
Hello {name|s|u|uc|js|h}!{~n}
|
||||||
|
Hello {name|s|u|uc|js|j}!{~n}
|
||||||
|
Hello {name|s|u|js|h|j}!{~n}
|
||||||
|
Hello {name|s|u|js|h|uc}!{~n}
|
||||||
|
Hello {name|s|u|js|j|h}!{~n}
|
||||||
|
Hello {name|s|u|js|j|uc}!{~n}
|
||||||
|
Hello {name|s|u|js|uc|h}!{~n}
|
||||||
|
Hello {name|s|u|js|uc|j}!{~n}
|
||||||
|
Hello {name|s|uc|h|j|u}!{~n}
|
||||||
|
Hello {name|s|uc|h|j|js}!{~n}
|
||||||
|
Hello {name|s|uc|h|u|j}!{~n}
|
||||||
|
Hello {name|s|uc|h|u|js}!{~n}
|
||||||
|
Hello {name|s|uc|h|js|j}!{~n}
|
||||||
|
Hello {name|s|uc|h|js|u}!{~n}
|
||||||
|
Hello {name|s|uc|j|h|u}!{~n}
|
||||||
|
Hello {name|s|uc|j|h|js}!{~n}
|
||||||
|
Hello {name|s|uc|j|u|h}!{~n}
|
||||||
|
Hello {name|s|uc|j|u|js}!{~n}
|
||||||
|
Hello {name|s|uc|j|js|h}!{~n}
|
||||||
|
Hello {name|s|uc|j|js|u}!{~n}
|
||||||
|
Hello {name|s|uc|u|h|j}!{~n}
|
||||||
|
Hello {name|s|uc|u|h|js}!{~n}
|
||||||
|
Hello {name|s|uc|u|j|h}!{~n}
|
||||||
|
Hello {name|s|uc|u|j|js}!{~n}
|
||||||
|
Hello {name|s|uc|u|js|h}!{~n}
|
||||||
|
Hello {name|s|uc|u|js|j}!{~n}
|
||||||
|
Hello {name|s|uc|js|h|j}!{~n}
|
||||||
|
Hello {name|s|uc|js|h|u}!{~n}
|
||||||
|
Hello {name|s|uc|js|j|h}!{~n}
|
||||||
|
Hello {name|s|uc|js|j|u}!{~n}
|
||||||
|
Hello {name|s|uc|js|u|h}!{~n}
|
||||||
|
Hello {name|s|uc|js|u|j}!{~n}
|
||||||
|
Hello {name|s|js|h|j|u}!{~n}
|
||||||
|
Hello {name|s|js|h|j|uc}!{~n}
|
||||||
|
Hello {name|s|js|h|u|j}!{~n}
|
||||||
|
Hello {name|s|js|h|u|uc}!{~n}
|
||||||
|
Hello {name|s|js|h|uc|j}!{~n}
|
||||||
|
Hello {name|s|js|h|uc|u}!{~n}
|
||||||
|
Hello {name|s|js|j|h|u}!{~n}
|
||||||
|
Hello {name|s|js|j|h|uc}!{~n}
|
||||||
|
Hello {name|s|js|j|u|h}!{~n}
|
||||||
|
Hello {name|s|js|j|u|uc}!{~n}
|
||||||
|
Hello {name|s|js|j|uc|h}!{~n}
|
||||||
|
Hello {name|s|js|j|uc|u}!{~n}
|
||||||
|
Hello {name|s|js|u|h|j}!{~n}
|
||||||
|
Hello {name|s|js|u|h|uc}!{~n}
|
||||||
|
Hello {name|s|js|u|j|h}!{~n}
|
||||||
|
Hello {name|s|js|u|j|uc}!{~n}
|
||||||
|
Hello {name|s|js|u|uc|h}!{~n}
|
||||||
|
Hello {name|s|js|u|uc|j}!{~n}
|
||||||
|
Hello {name|s|js|uc|h|j}!{~n}
|
||||||
|
Hello {name|s|js|uc|h|u}!{~n}
|
||||||
|
Hello {name|s|js|uc|j|h}!{~n}
|
||||||
|
Hello {name|s|js|uc|j|u}!{~n}
|
||||||
|
Hello {name|s|js|uc|u|h}!{~n}
|
||||||
|
Hello {name|s|js|uc|u|j}!{~n}
|
||||||
|
Hello {name|h|s|j|u|uc}!{~n}
|
||||||
|
Hello {name|h|s|j|u|js}!{~n}
|
||||||
|
Hello {name|h|s|j|uc|u}!{~n}
|
||||||
|
Hello {name|h|s|j|uc|js}!{~n}
|
||||||
|
Hello {name|h|s|j|js|u}!{~n}
|
||||||
|
Hello {name|h|s|j|js|uc}!{~n}
|
||||||
|
Hello {name|h|s|u|j|uc}!{~n}
|
||||||
|
Hello {name|h|s|u|j|js}!{~n}
|
||||||
|
Hello {name|h|s|u|uc|j}!{~n}
|
||||||
|
Hello {name|h|s|u|uc|js}!{~n}
|
||||||
|
Hello {name|h|s|u|js|j}!{~n}
|
||||||
|
Hello {name|h|s|u|js|uc}!{~n}
|
||||||
|
Hello {name|h|s|uc|j|u}!{~n}
|
||||||
|
Hello {name|h|s|uc|j|js}!{~n}
|
||||||
|
Hello {name|h|s|uc|u|j}!{~n}
|
||||||
|
Hello {name|h|s|uc|u|js}!{~n}
|
||||||
|
Hello {name|h|s|uc|js|j}!{~n}
|
||||||
|
Hello {name|h|s|uc|js|u}!{~n}
|
||||||
|
Hello {name|h|s|js|j|u}!{~n}
|
||||||
|
Hello {name|h|s|js|j|uc}!{~n}
|
||||||
|
Hello {name|h|s|js|u|j}!{~n}
|
||||||
|
Hello {name|h|s|js|u|uc}!{~n}
|
||||||
|
Hello {name|h|s|js|uc|j}!{~n}
|
||||||
|
Hello {name|h|s|js|uc|u}!{~n}
|
||||||
|
Hello {name|h|j|s|u|uc}!{~n}
|
||||||
|
Hello {name|h|j|s|u|js}!{~n}
|
||||||
|
Hello {name|h|j|s|uc|u}!{~n}
|
||||||
|
Hello {name|h|j|s|uc|js}!{~n}
|
||||||
|
Hello {name|h|j|s|js|u}!{~n}
|
||||||
|
Hello {name|h|j|s|js|uc}!{~n}
|
||||||
|
Hello {name|h|j|u|s|uc}!{~n}
|
||||||
|
Hello {name|h|j|u|s|js}!{~n}
|
||||||
|
Hello {name|h|j|u|uc|s}!{~n}
|
||||||
|
Hello {name|h|j|u|uc|js}!{~n}
|
||||||
|
Hello {name|h|j|u|js|s}!{~n}
|
||||||
|
Hello {name|h|j|u|js|uc}!{~n}
|
||||||
|
Hello {name|h|j|uc|s|u}!{~n}
|
||||||
|
Hello {name|h|j|uc|s|js}!{~n}
|
||||||
|
Hello {name|h|j|uc|u|s}!{~n}
|
||||||
|
Hello {name|h|j|uc|u|js}!{~n}
|
||||||
|
Hello {name|h|j|uc|js|s}!{~n}
|
||||||
|
Hello {name|h|j|uc|js|u}!{~n}
|
||||||
|
Hello {name|h|j|js|s|u}!{~n}
|
||||||
|
Hello {name|h|j|js|s|uc}!{~n}
|
||||||
|
Hello {name|h|j|js|u|s}!{~n}
|
||||||
|
Hello {name|h|j|js|u|uc}!{~n}
|
||||||
|
Hello {name|h|j|js|uc|s}!{~n}
|
||||||
|
Hello {name|h|j|js|uc|u}!{~n}
|
||||||
|
Hello {name|h|u|s|j|uc}!{~n}
|
||||||
|
Hello {name|h|u|s|j|js}!{~n}
|
||||||
|
Hello {name|h|u|s|uc|j}!{~n}
|
||||||
|
Hello {name|h|u|s|uc|js}!{~n}
|
||||||
|
Hello {name|h|u|s|js|j}!{~n}
|
||||||
|
Hello {name|h|u|s|js|uc}!{~n}
|
||||||
|
Hello {name|h|u|j|s|uc}!{~n}
|
||||||
|
Hello {name|h|u|j|s|js}!{~n}
|
||||||
|
Hello {name|h|u|j|uc|s}!{~n}
|
||||||
|
Hello {name|h|u|j|uc|js}!{~n}
|
||||||
|
Hello {name|h|u|j|js|s}!{~n}
|
||||||
|
Hello {name|h|u|j|js|uc}!{~n}
|
||||||
|
Hello {name|h|u|uc|s|j}!{~n}
|
||||||
|
Hello {name|h|u|uc|s|js}!{~n}
|
||||||
|
Hello {name|h|u|uc|j|s}!{~n}
|
||||||
|
Hello {name|h|u|uc|j|js}!{~n}
|
||||||
|
Hello {name|h|u|uc|js|s}!{~n}
|
||||||
|
Hello {name|h|u|uc|js|j}!{~n}
|
||||||
|
Hello {name|h|u|js|s|j}!{~n}
|
||||||
|
Hello {name|h|u|js|s|uc}!{~n}
|
||||||
|
Hello {name|h|u|js|j|s}!{~n}
|
||||||
|
Hello {name|h|u|js|j|uc}!{~n}
|
||||||
|
Hello {name|h|u|js|uc|s}!{~n}
|
||||||
|
Hello {name|h|u|js|uc|j}!{~n}
|
||||||
|
Hello {name|h|uc|s|j|u}!{~n}
|
||||||
|
Hello {name|h|uc|s|j|js}!{~n}
|
||||||
|
Hello {name|h|uc|s|u|j}!{~n}
|
||||||
|
Hello {name|h|uc|s|u|js}!{~n}
|
||||||
|
Hello {name|h|uc|s|js|j}!{~n}
|
||||||
|
Hello {name|h|uc|s|js|u}!{~n}
|
||||||
|
Hello {name|h|uc|j|s|u}!{~n}
|
||||||
|
Hello {name|h|uc|j|s|js}!{~n}
|
||||||
|
Hello {name|h|uc|j|u|s}!{~n}
|
||||||
|
Hello {name|h|uc|j|u|js}!{~n}
|
||||||
|
Hello {name|h|uc|j|js|s}!{~n}
|
||||||
|
Hello {name|h|uc|j|js|u}!{~n}
|
||||||
|
Hello {name|h|uc|u|s|j}!{~n}
|
||||||
|
Hello {name|h|uc|u|s|js}!{~n}
|
||||||
|
Hello {name|h|uc|u|j|s}!{~n}
|
||||||
|
Hello {name|h|uc|u|j|js}!{~n}
|
||||||
|
Hello {name|h|uc|u|js|s}!{~n}
|
||||||
|
Hello {name|h|uc|u|js|j}!{~n}
|
||||||
|
Hello {name|h|uc|js|s|j}!{~n}
|
||||||
|
Hello {name|h|uc|js|s|u}!{~n}
|
||||||
|
Hello {name|h|uc|js|j|s}!{~n}
|
||||||
|
Hello {name|h|uc|js|j|u}!{~n}
|
||||||
|
Hello {name|h|uc|js|u|s}!{~n}
|
||||||
|
Hello {name|h|uc|js|u|j}!{~n}
|
||||||
|
Hello {name|h|js|s|j|u}!{~n}
|
||||||
|
Hello {name|h|js|s|j|uc}!{~n}
|
||||||
|
Hello {name|h|js|s|u|j}!{~n}
|
||||||
|
Hello {name|h|js|s|u|uc}!{~n}
|
||||||
|
Hello {name|h|js|s|uc|j}!{~n}
|
||||||
|
Hello {name|h|js|s|uc|u}!{~n}
|
||||||
|
Hello {name|h|js|j|s|u}!{~n}
|
||||||
|
Hello {name|h|js|j|s|uc}!{~n}
|
||||||
|
Hello {name|h|js|j|u|s}!{~n}
|
||||||
|
Hello {name|h|js|j|u|uc}!{~n}
|
||||||
|
Hello {name|h|js|j|uc|s}!{~n}
|
||||||
|
Hello {name|h|js|j|uc|u}!{~n}
|
||||||
|
Hello {name|h|js|u|s|j}!{~n}
|
||||||
|
Hello {name|h|js|u|s|uc}!{~n}
|
||||||
|
Hello {name|h|js|u|j|s}!{~n}
|
||||||
|
Hello {name|h|js|u|j|uc}!{~n}
|
||||||
|
Hello {name|h|js|u|uc|s}!{~n}
|
||||||
|
Hello {name|h|js|u|uc|j}!{~n}
|
||||||
|
Hello {name|h|js|uc|s|j}!{~n}
|
||||||
|
Hello {name|h|js|uc|s|u}!{~n}
|
||||||
|
Hello {name|h|js|uc|j|s}!{~n}
|
||||||
|
Hello {name|h|js|uc|j|u}!{~n}
|
||||||
|
Hello {name|h|js|uc|u|s}!{~n}
|
||||||
|
Hello {name|h|js|uc|u|j}!{~n}
|
||||||
|
Hello {name|j|s|h|u|uc}!{~n}
|
||||||
|
Hello {name|j|s|h|u|js}!{~n}
|
||||||
|
Hello {name|j|s|h|uc|u}!{~n}
|
||||||
|
Hello {name|j|s|h|uc|js}!{~n}
|
||||||
|
Hello {name|j|s|h|js|u}!{~n}
|
||||||
|
Hello {name|j|s|h|js|uc}!{~n}
|
||||||
|
Hello {name|j|s|u|h|uc}!{~n}
|
||||||
|
Hello {name|j|s|u|h|js}!{~n}
|
||||||
|
Hello {name|j|s|u|uc|h}!{~n}
|
||||||
|
Hello {name|j|s|u|uc|js}!{~n}
|
||||||
|
Hello {name|j|s|u|js|h}!{~n}
|
||||||
|
Hello {name|j|s|u|js|uc}!{~n}
|
||||||
|
Hello {name|j|s|uc|h|u}!{~n}
|
||||||
|
Hello {name|j|s|uc|h|js}!{~n}
|
||||||
|
Hello {name|j|s|uc|u|h}!{~n}
|
||||||
|
Hello {name|j|s|uc|u|js}!{~n}
|
||||||
|
Hello {name|j|s|uc|js|h}!{~n}
|
||||||
|
Hello {name|j|s|uc|js|u}!{~n}
|
||||||
|
Hello {name|j|s|js|h|u}!{~n}
|
||||||
|
Hello {name|j|s|js|h|uc}!{~n}
|
||||||
|
Hello {name|j|s|js|u|h}!{~n}
|
||||||
|
Hello {name|j|s|js|u|uc}!{~n}
|
||||||
|
Hello {name|j|s|js|uc|h}!{~n}
|
||||||
|
Hello {name|j|s|js|uc|u}!{~n}
|
||||||
|
Hello {name|j|h|s|u|uc}!{~n}
|
||||||
|
Hello {name|j|h|s|u|js}!{~n}
|
||||||
|
Hello {name|j|h|s|uc|u}!{~n}
|
||||||
|
Hello {name|j|h|s|uc|js}!{~n}
|
||||||
|
Hello {name|j|h|s|js|u}!{~n}
|
||||||
|
Hello {name|j|h|s|js|uc}!{~n}
|
||||||
|
Hello {name|j|h|u|s|uc}!{~n}
|
||||||
|
Hello {name|j|h|u|s|js}!{~n}
|
||||||
|
Hello {name|j|h|u|uc|s}!{~n}
|
||||||
|
Hello {name|j|h|u|uc|js}!{~n}
|
||||||
|
Hello {name|j|h|u|js|s}!{~n}
|
||||||
|
Hello {name|j|h|u|js|uc}!{~n}
|
||||||
|
Hello {name|j|h|uc|s|u}!{~n}
|
||||||
|
Hello {name|j|h|uc|s|js}!{~n}
|
||||||
|
Hello {name|j|h|uc|u|s}!{~n}
|
||||||
|
Hello {name|j|h|uc|u|js}!{~n}
|
||||||
|
Hello {name|j|h|uc|js|s}!{~n}
|
||||||
|
Hello {name|j|h|uc|js|u}!{~n}
|
||||||
|
Hello {name|j|h|js|s|u}!{~n}
|
||||||
|
Hello {name|j|h|js|s|uc}!{~n}
|
||||||
|
Hello {name|j|h|js|u|s}!{~n}
|
||||||
|
Hello {name|j|h|js|u|uc}!{~n}
|
||||||
|
Hello {name|j|h|js|uc|s}!{~n}
|
||||||
|
Hello {name|j|h|js|uc|u}!{~n}
|
||||||
|
Hello {name|j|u|s|h|uc}!{~n}
|
||||||
|
Hello {name|j|u|s|h|js}!{~n}
|
||||||
|
Hello {name|j|u|s|uc|h}!{~n}
|
||||||
|
Hello {name|j|u|s|uc|js}!{~n}
|
||||||
|
Hello {name|j|u|s|js|h}!{~n}
|
||||||
|
Hello {name|j|u|s|js|uc}!{~n}
|
||||||
|
Hello {name|j|u|h|s|uc}!{~n}
|
||||||
|
Hello {name|j|u|h|s|js}!{~n}
|
||||||
|
Hello {name|j|u|h|uc|s}!{~n}
|
||||||
|
Hello {name|j|u|h|uc|js}!{~n}
|
||||||
|
Hello {name|j|u|h|js|s}!{~n}
|
||||||
|
Hello {name|j|u|h|js|uc}!{~n}
|
||||||
|
Hello {name|j|u|uc|s|h}!{~n}
|
||||||
|
Hello {name|j|u|uc|s|js}!{~n}
|
||||||
|
Hello {name|j|u|uc|h|s}!{~n}
|
||||||
|
Hello {name|j|u|uc|h|js}!{~n}
|
||||||
|
Hello {name|j|u|uc|js|s}!{~n}
|
||||||
|
Hello {name|j|u|uc|js|h}!{~n}
|
||||||
|
Hello {name|j|u|js|s|h}!{~n}
|
||||||
|
Hello {name|j|u|js|s|uc}!{~n}
|
||||||
|
Hello {name|j|u|js|h|s}!{~n}
|
||||||
|
Hello {name|j|u|js|h|uc}!{~n}
|
||||||
|
Hello {name|j|u|js|uc|s}!{~n}
|
||||||
|
Hello {name|j|u|js|uc|h}!{~n}
|
||||||
|
Hello {name|j|uc|s|h|u}!{~n}
|
||||||
|
Hello {name|j|uc|s|h|js}!{~n}
|
||||||
|
Hello {name|j|uc|s|u|h}!{~n}
|
||||||
|
Hello {name|j|uc|s|u|js}!{~n}
|
||||||
|
Hello {name|j|uc|s|js|h}!{~n}
|
||||||
|
Hello {name|j|uc|s|js|u}!{~n}
|
||||||
|
Hello {name|j|uc|h|s|u}!{~n}
|
||||||
|
Hello {name|j|uc|h|s|js}!{~n}
|
||||||
|
Hello {name|j|uc|h|u|s}!{~n}
|
||||||
|
Hello {name|j|uc|h|u|js}!{~n}
|
||||||
|
Hello {name|j|uc|h|js|s}!{~n}
|
||||||
|
Hello {name|j|uc|h|js|u}!{~n}
|
||||||
|
Hello {name|j|uc|u|s|h}!{~n}
|
||||||
|
Hello {name|j|uc|u|s|js}!{~n}
|
||||||
|
Hello {name|j|uc|u|h|s}!{~n}
|
||||||
|
Hello {name|j|uc|u|h|js}!{~n}
|
||||||
|
Hello {name|j|uc|u|js|s}!{~n}
|
||||||
|
Hello {name|j|uc|u|js|h}!{~n}
|
||||||
|
Hello {name|j|uc|js|s|h}!{~n}
|
||||||
|
Hello {name|j|uc|js|s|u}!{~n}
|
||||||
|
Hello {name|j|uc|js|h|s}!{~n}
|
||||||
|
Hello {name|j|uc|js|h|u}!{~n}
|
||||||
|
Hello {name|j|uc|js|u|s}!{~n}
|
||||||
|
Hello {name|j|uc|js|u|h}!{~n}
|
||||||
|
Hello {name|j|js|s|h|u}!{~n}
|
||||||
|
Hello {name|j|js|s|h|uc}!{~n}
|
||||||
|
Hello {name|j|js|s|u|h}!{~n}
|
||||||
|
Hello {name|j|js|s|u|uc}!{~n}
|
||||||
|
Hello {name|j|js|s|uc|h}!{~n}
|
||||||
|
Hello {name|j|js|s|uc|u}!{~n}
|
||||||
|
Hello {name|j|js|h|s|u}!{~n}
|
||||||
|
Hello {name|j|js|h|s|uc}!{~n}
|
||||||
|
Hello {name|j|js|h|u|s}!{~n}
|
||||||
|
Hello {name|j|js|h|u|uc}!{~n}
|
||||||
|
Hello {name|j|js|h|uc|s}!{~n}
|
||||||
|
Hello {name|j|js|h|uc|u}!{~n}
|
||||||
|
Hello {name|j|js|u|s|h}!{~n}
|
||||||
|
Hello {name|j|js|u|s|uc}!{~n}
|
||||||
|
Hello {name|j|js|u|h|s}!{~n}
|
||||||
|
Hello {name|j|js|u|h|uc}!{~n}
|
||||||
|
Hello {name|j|js|u|uc|s}!{~n}
|
||||||
|
Hello {name|j|js|u|uc|h}!{~n}
|
||||||
|
Hello {name|j|js|uc|s|h}!{~n}
|
||||||
|
Hello {name|j|js|uc|s|u}!{~n}
|
||||||
|
Hello {name|j|js|uc|h|s}!{~n}
|
||||||
|
Hello {name|j|js|uc|h|u}!{~n}
|
||||||
|
Hello {name|j|js|uc|u|s}!{~n}
|
||||||
|
Hello {name|j|js|uc|u|h}!{~n}
|
||||||
|
Hello {name|u|s|h|j|uc}!{~n}
|
||||||
|
Hello {name|u|s|h|j|js}!{~n}
|
||||||
|
Hello {name|u|s|h|uc|j}!{~n}
|
||||||
|
Hello {name|u|s|h|uc|js}!{~n}
|
||||||
|
Hello {name|u|s|h|js|j}!{~n}
|
||||||
|
Hello {name|u|s|h|js|uc}!{~n}
|
||||||
|
Hello {name|u|s|j|h|uc}!{~n}
|
||||||
|
Hello {name|u|s|j|h|js}!{~n}
|
||||||
|
Hello {name|u|s|j|uc|h}!{~n}
|
||||||
|
Hello {name|u|s|j|uc|js}!{~n}
|
||||||
|
Hello {name|u|s|j|js|h}!{~n}
|
||||||
|
Hello {name|u|s|j|js|uc}!{~n}
|
||||||
|
Hello {name|u|s|uc|h|j}!{~n}
|
||||||
|
Hello {name|u|s|uc|h|js}!{~n}
|
||||||
|
Hello {name|u|s|uc|j|h}!{~n}
|
||||||
|
Hello {name|u|s|uc|j|js}!{~n}
|
||||||
|
Hello {name|u|s|uc|js|h}!{~n}
|
||||||
|
Hello {name|u|s|uc|js|j}!{~n}
|
||||||
|
Hello {name|u|s|js|h|j}!{~n}
|
||||||
|
Hello {name|u|s|js|h|uc}!{~n}
|
||||||
|
Hello {name|u|s|js|j|h}!{~n}
|
||||||
|
Hello {name|u|s|js|j|uc}!{~n}
|
||||||
|
Hello {name|u|s|js|uc|h}!{~n}
|
||||||
|
Hello {name|u|s|js|uc|j}!{~n}
|
||||||
|
Hello {name|u|h|s|j|uc}!{~n}
|
||||||
|
Hello {name|u|h|s|j|js}!{~n}
|
||||||
|
Hello {name|u|h|s|uc|j}!{~n}
|
||||||
|
Hello {name|u|h|s|uc|js}!{~n}
|
||||||
|
Hello {name|u|h|s|js|j}!{~n}
|
||||||
|
Hello {name|u|h|s|js|uc}!{~n}
|
||||||
|
Hello {name|u|h|j|s|uc}!{~n}
|
||||||
|
Hello {name|u|h|j|s|js}!{~n}
|
||||||
|
Hello {name|u|h|j|uc|s}!{~n}
|
||||||
|
Hello {name|u|h|j|uc|js}!{~n}
|
||||||
|
Hello {name|u|h|j|js|s}!{~n}
|
||||||
|
Hello {name|u|h|j|js|uc}!{~n}
|
||||||
|
Hello {name|u|h|uc|s|j}!{~n}
|
||||||
|
Hello {name|u|h|uc|s|js}!{~n}
|
||||||
|
Hello {name|u|h|uc|j|s}!{~n}
|
||||||
|
Hello {name|u|h|uc|j|js}!{~n}
|
||||||
|
Hello {name|u|h|uc|js|s}!{~n}
|
||||||
|
Hello {name|u|h|uc|js|j}!{~n}
|
||||||
|
Hello {name|u|h|js|s|j}!{~n}
|
||||||
|
Hello {name|u|h|js|s|uc}!{~n}
|
||||||
|
Hello {name|u|h|js|j|s}!{~n}
|
||||||
|
Hello {name|u|h|js|j|uc}!{~n}
|
||||||
|
Hello {name|u|h|js|uc|s}!{~n}
|
||||||
|
Hello {name|u|h|js|uc|j}!{~n}
|
||||||
|
Hello {name|u|j|s|h|uc}!{~n}
|
||||||
|
Hello {name|u|j|s|h|js}!{~n}
|
||||||
|
Hello {name|u|j|s|uc|h}!{~n}
|
||||||
|
Hello {name|u|j|s|uc|js}!{~n}
|
||||||
|
Hello {name|u|j|s|js|h}!{~n}
|
||||||
|
Hello {name|u|j|s|js|uc}!{~n}
|
||||||
|
Hello {name|u|j|h|s|uc}!{~n}
|
||||||
|
Hello {name|u|j|h|s|js}!{~n}
|
||||||
|
Hello {name|u|j|h|uc|s}!{~n}
|
||||||
|
Hello {name|u|j|h|uc|js}!{~n}
|
||||||
|
Hello {name|u|j|h|js|s}!{~n}
|
||||||
|
Hello {name|u|j|h|js|uc}!{~n}
|
||||||
|
Hello {name|u|j|uc|s|h}!{~n}
|
||||||
|
Hello {name|u|j|uc|s|js}!{~n}
|
||||||
|
Hello {name|u|j|uc|h|s}!{~n}
|
||||||
|
Hello {name|u|j|uc|h|js}!{~n}
|
||||||
|
Hello {name|u|j|uc|js|s}!{~n}
|
||||||
|
Hello {name|u|j|uc|js|h}!{~n}
|
||||||
|
Hello {name|u|j|js|s|h}!{~n}
|
||||||
|
Hello {name|u|j|js|s|uc}!{~n}
|
||||||
|
Hello {name|u|j|js|h|s}!{~n}
|
||||||
|
Hello {name|u|j|js|h|uc}!{~n}
|
||||||
|
Hello {name|u|j|js|uc|s}!{~n}
|
||||||
|
Hello {name|u|j|js|uc|h}!{~n}
|
||||||
|
Hello {name|u|uc|s|h|j}!{~n}
|
||||||
|
Hello {name|u|uc|s|h|js}!{~n}
|
||||||
|
Hello {name|u|uc|s|j|h}!{~n}
|
||||||
|
Hello {name|u|uc|s|j|js}!{~n}
|
||||||
|
Hello {name|u|uc|s|js|h}!{~n}
|
||||||
|
Hello {name|u|uc|s|js|j}!{~n}
|
||||||
|
Hello {name|u|uc|h|s|j}!{~n}
|
||||||
|
Hello {name|u|uc|h|s|js}!{~n}
|
||||||
|
Hello {name|u|uc|h|j|s}!{~n}
|
||||||
|
Hello {name|u|uc|h|j|js}!{~n}
|
||||||
|
Hello {name|u|uc|h|js|s}!{~n}
|
||||||
|
Hello {name|u|uc|h|js|j}!{~n}
|
||||||
|
Hello {name|u|uc|j|s|h}!{~n}
|
||||||
|
Hello {name|u|uc|j|s|js}!{~n}
|
||||||
|
Hello {name|u|uc|j|h|s}!{~n}
|
||||||
|
Hello {name|u|uc|j|h|js}!{~n}
|
||||||
|
Hello {name|u|uc|j|js|s}!{~n}
|
||||||
|
Hello {name|u|uc|j|js|h}!{~n}
|
||||||
|
Hello {name|u|uc|js|s|h}!{~n}
|
||||||
|
Hello {name|u|uc|js|s|j}!{~n}
|
||||||
|
Hello {name|u|uc|js|h|s}!{~n}
|
||||||
|
Hello {name|u|uc|js|h|j}!{~n}
|
||||||
|
Hello {name|u|uc|js|j|s}!{~n}
|
||||||
|
Hello {name|u|uc|js|j|h}!{~n}
|
||||||
|
Hello {name|u|js|s|h|j}!{~n}
|
||||||
|
Hello {name|u|js|s|h|uc}!{~n}
|
||||||
|
Hello {name|u|js|s|j|h}!{~n}
|
||||||
|
Hello {name|u|js|s|j|uc}!{~n}
|
||||||
|
Hello {name|u|js|s|uc|h}!{~n}
|
||||||
|
Hello {name|u|js|s|uc|j}!{~n}
|
||||||
|
Hello {name|u|js|h|s|j}!{~n}
|
||||||
|
Hello {name|u|js|h|s|uc}!{~n}
|
||||||
|
Hello {name|u|js|h|j|s}!{~n}
|
||||||
|
Hello {name|u|js|h|j|uc}!{~n}
|
||||||
|
Hello {name|u|js|h|uc|s}!{~n}
|
||||||
|
Hello {name|u|js|h|uc|j}!{~n}
|
||||||
|
Hello {name|u|js|j|s|h}!{~n}
|
||||||
|
Hello {name|u|js|j|s|uc}!{~n}
|
||||||
|
Hello {name|u|js|j|h|s}!{~n}
|
||||||
|
Hello {name|u|js|j|h|uc}!{~n}
|
||||||
|
Hello {name|u|js|j|uc|s}!{~n}
|
||||||
|
Hello {name|u|js|j|uc|h}!{~n}
|
||||||
|
Hello {name|u|js|uc|s|h}!{~n}
|
||||||
|
Hello {name|u|js|uc|s|j}!{~n}
|
||||||
|
Hello {name|u|js|uc|h|s}!{~n}
|
||||||
|
Hello {name|u|js|uc|h|j}!{~n}
|
||||||
|
Hello {name|u|js|uc|j|s}!{~n}
|
||||||
|
Hello {name|u|js|uc|j|h}!{~n}
|
||||||
|
Hello {name|uc|s|h|j|u}!{~n}
|
||||||
|
Hello {name|uc|s|h|j|js}!{~n}
|
||||||
|
Hello {name|uc|s|h|u|j}!{~n}
|
||||||
|
Hello {name|uc|s|h|u|js}!{~n}
|
||||||
|
Hello {name|uc|s|h|js|j}!{~n}
|
||||||
|
Hello {name|uc|s|h|js|u}!{~n}
|
||||||
|
Hello {name|uc|s|j|h|u}!{~n}
|
||||||
|
Hello {name|uc|s|j|h|js}!{~n}
|
||||||
|
Hello {name|uc|s|j|u|h}!{~n}
|
||||||
|
Hello {name|uc|s|j|u|js}!{~n}
|
||||||
|
Hello {name|uc|s|j|js|h}!{~n}
|
||||||
|
Hello {name|uc|s|j|js|u}!{~n}
|
||||||
|
Hello {name|uc|s|u|h|j}!{~n}
|
||||||
|
Hello {name|uc|s|u|h|js}!{~n}
|
||||||
|
Hello {name|uc|s|u|j|h}!{~n}
|
||||||
|
Hello {name|uc|s|u|j|js}!{~n}
|
||||||
|
Hello {name|uc|s|u|js|h}!{~n}
|
||||||
|
Hello {name|uc|s|u|js|j}!{~n}
|
||||||
|
Hello {name|uc|s|js|h|j}!{~n}
|
||||||
|
Hello {name|uc|s|js|h|u}!{~n}
|
||||||
|
Hello {name|uc|s|js|j|h}!{~n}
|
||||||
|
Hello {name|uc|s|js|j|u}!{~n}
|
||||||
|
Hello {name|uc|s|js|u|h}!{~n}
|
||||||
|
Hello {name|uc|s|js|u|j}!{~n}
|
||||||
|
Hello {name|uc|h|s|j|u}!{~n}
|
||||||
|
Hello {name|uc|h|s|j|js}!{~n}
|
||||||
|
Hello {name|uc|h|s|u|j}!{~n}
|
||||||
|
Hello {name|uc|h|s|u|js}!{~n}
|
||||||
|
Hello {name|uc|h|s|js|j}!{~n}
|
||||||
|
Hello {name|uc|h|s|js|u}!{~n}
|
||||||
|
Hello {name|uc|h|j|s|u}!{~n}
|
||||||
|
Hello {name|uc|h|j|s|js}!{~n}
|
||||||
|
Hello {name|uc|h|j|u|s}!{~n}
|
||||||
|
Hello {name|uc|h|j|u|js}!{~n}
|
||||||
|
Hello {name|uc|h|j|js|s}!{~n}
|
||||||
|
Hello {name|uc|h|j|js|u}!{~n}
|
||||||
|
Hello {name|uc|h|u|s|j}!{~n}
|
||||||
|
Hello {name|uc|h|u|s|js}!{~n}
|
||||||
|
Hello {name|uc|h|u|j|s}!{~n}
|
||||||
|
Hello {name|uc|h|u|j|js}!{~n}
|
||||||
|
Hello {name|uc|h|u|js|s}!{~n}
|
||||||
|
Hello {name|uc|h|u|js|j}!{~n}
|
||||||
|
Hello {name|uc|h|js|s|j}!{~n}
|
||||||
|
Hello {name|uc|h|js|s|u}!{~n}
|
||||||
|
Hello {name|uc|h|js|j|s}!{~n}
|
||||||
|
Hello {name|uc|h|js|j|u}!{~n}
|
||||||
|
Hello {name|uc|h|js|u|s}!{~n}
|
||||||
|
Hello {name|uc|h|js|u|j}!{~n}
|
||||||
|
Hello {name|uc|j|s|h|u}!{~n}
|
||||||
|
Hello {name|uc|j|s|h|js}!{~n}
|
||||||
|
Hello {name|uc|j|s|u|h}!{~n}
|
||||||
|
Hello {name|uc|j|s|u|js}!{~n}
|
||||||
|
Hello {name|uc|j|s|js|h}!{~n}
|
||||||
|
Hello {name|uc|j|s|js|u}!{~n}
|
||||||
|
Hello {name|uc|j|h|s|u}!{~n}
|
||||||
|
Hello {name|uc|j|h|s|js}!{~n}
|
||||||
|
Hello {name|uc|j|h|u|s}!{~n}
|
||||||
|
Hello {name|uc|j|h|u|js}!{~n}
|
||||||
|
Hello {name|uc|j|h|js|s}!{~n}
|
||||||
|
Hello {name|uc|j|h|js|u}!{~n}
|
||||||
|
Hello {name|uc|j|u|s|h}!{~n}
|
||||||
|
Hello {name|uc|j|u|s|js}!{~n}
|
||||||
|
Hello {name|uc|j|u|h|s}!{~n}
|
||||||
|
Hello {name|uc|j|u|h|js}!{~n}
|
||||||
|
Hello {name|uc|j|u|js|s}!{~n}
|
||||||
|
Hello {name|uc|j|u|js|h}!{~n}
|
||||||
|
Hello {name|uc|j|js|s|h}!{~n}
|
||||||
|
Hello {name|uc|j|js|s|u}!{~n}
|
||||||
|
Hello {name|uc|j|js|h|s}!{~n}
|
||||||
|
Hello {name|uc|j|js|h|u}!{~n}
|
||||||
|
Hello {name|uc|j|js|u|s}!{~n}
|
||||||
|
Hello {name|uc|j|js|u|h}!{~n}
|
||||||
|
Hello {name|uc|u|s|h|j}!{~n}
|
||||||
|
Hello {name|uc|u|s|h|js}!{~n}
|
||||||
|
Hello {name|uc|u|s|j|h}!{~n}
|
||||||
|
Hello {name|uc|u|s|j|js}!{~n}
|
||||||
|
Hello {name|uc|u|s|js|h}!{~n}
|
||||||
|
Hello {name|uc|u|s|js|j}!{~n}
|
||||||
|
Hello {name|uc|u|h|s|j}!{~n}
|
||||||
|
Hello {name|uc|u|h|s|js}!{~n}
|
||||||
|
Hello {name|uc|u|h|j|s}!{~n}
|
||||||
|
Hello {name|uc|u|h|j|js}!{~n}
|
||||||
|
Hello {name|uc|u|h|js|s}!{~n}
|
||||||
|
Hello {name|uc|u|h|js|j}!{~n}
|
||||||
|
Hello {name|uc|u|j|s|h}!{~n}
|
||||||
|
Hello {name|uc|u|j|s|js}!{~n}
|
||||||
|
Hello {name|uc|u|j|h|s}!{~n}
|
||||||
|
Hello {name|uc|u|j|h|js}!{~n}
|
||||||
|
Hello {name|uc|u|j|js|s}!{~n}
|
||||||
|
Hello {name|uc|u|j|js|h}!{~n}
|
||||||
|
Hello {name|uc|u|js|s|h}!{~n}
|
||||||
|
Hello {name|uc|u|js|s|j}!{~n}
|
||||||
|
Hello {name|uc|u|js|h|s}!{~n}
|
||||||
|
Hello {name|uc|u|js|h|j}!{~n}
|
||||||
|
Hello {name|uc|u|js|j|s}!{~n}
|
||||||
|
Hello {name|uc|u|js|j|h}!{~n}
|
||||||
|
Hello {name|uc|js|s|h|j}!{~n}
|
||||||
|
Hello {name|uc|js|s|h|u}!{~n}
|
||||||
|
Hello {name|uc|js|s|j|h}!{~n}
|
||||||
|
Hello {name|uc|js|s|j|u}!{~n}
|
||||||
|
Hello {name|uc|js|s|u|h}!{~n}
|
||||||
|
Hello {name|uc|js|s|u|j}!{~n}
|
||||||
|
Hello {name|uc|js|h|s|j}!{~n}
|
||||||
|
Hello {name|uc|js|h|s|u}!{~n}
|
||||||
|
Hello {name|uc|js|h|j|s}!{~n}
|
||||||
|
Hello {name|uc|js|h|j|u}!{~n}
|
||||||
|
Hello {name|uc|js|h|u|s}!{~n}
|
||||||
|
Hello {name|uc|js|h|u|j}!{~n}
|
||||||
|
Hello {name|uc|js|j|s|h}!{~n}
|
||||||
|
Hello {name|uc|js|j|s|u}!{~n}
|
||||||
|
Hello {name|uc|js|j|h|s}!{~n}
|
||||||
|
Hello {name|uc|js|j|h|u}!{~n}
|
||||||
|
Hello {name|uc|js|j|u|s}!{~n}
|
||||||
|
Hello {name|uc|js|j|u|h}!{~n}
|
||||||
|
Hello {name|uc|js|u|s|h}!{~n}
|
||||||
|
Hello {name|uc|js|u|s|j}!{~n}
|
||||||
|
Hello {name|uc|js|u|h|s}!{~n}
|
||||||
|
Hello {name|uc|js|u|h|j}!{~n}
|
||||||
|
Hello {name|uc|js|u|j|s}!{~n}
|
||||||
|
Hello {name|uc|js|u|j|h}!{~n}
|
||||||
|
Hello {name|js|s|h|j|u}!{~n}
|
||||||
|
Hello {name|js|s|h|j|uc}!{~n}
|
||||||
|
Hello {name|js|s|h|u|j}!{~n}
|
||||||
|
Hello {name|js|s|h|u|uc}!{~n}
|
||||||
|
Hello {name|js|s|h|uc|j}!{~n}
|
||||||
|
Hello {name|js|s|h|uc|u}!{~n}
|
||||||
|
Hello {name|js|s|j|h|u}!{~n}
|
||||||
|
Hello {name|js|s|j|h|uc}!{~n}
|
||||||
|
Hello {name|js|s|j|u|h}!{~n}
|
||||||
|
Hello {name|js|s|j|u|uc}!{~n}
|
||||||
|
Hello {name|js|s|j|uc|h}!{~n}
|
||||||
|
Hello {name|js|s|j|uc|u}!{~n}
|
||||||
|
Hello {name|js|s|u|h|j}!{~n}
|
||||||
|
Hello {name|js|s|u|h|uc}!{~n}
|
||||||
|
Hello {name|js|s|u|j|h}!{~n}
|
||||||
|
Hello {name|js|s|u|j|uc}!{~n}
|
||||||
|
Hello {name|js|s|u|uc|h}!{~n}
|
||||||
|
Hello {name|js|s|u|uc|j}!{~n}
|
||||||
|
Hello {name|js|s|uc|h|j}!{~n}
|
||||||
|
Hello {name|js|s|uc|h|u}!{~n}
|
||||||
|
Hello {name|js|s|uc|j|h}!{~n}
|
||||||
|
Hello {name|js|s|uc|j|u}!{~n}
|
||||||
|
Hello {name|js|s|uc|u|h}!{~n}
|
||||||
|
Hello {name|js|s|uc|u|j}!{~n}
|
||||||
|
Hello {name|js|h|s|j|u}!{~n}
|
||||||
|
Hello {name|js|h|s|j|uc}!{~n}
|
||||||
|
Hello {name|js|h|s|u|j}!{~n}
|
||||||
|
Hello {name|js|h|s|u|uc}!{~n}
|
||||||
|
Hello {name|js|h|s|uc|j}!{~n}
|
||||||
|
Hello {name|js|h|s|uc|u}!{~n}
|
||||||
|
Hello {name|js|h|j|s|u}!{~n}
|
||||||
|
Hello {name|js|h|j|s|uc}!{~n}
|
||||||
|
Hello {name|js|h|j|u|s}!{~n}
|
||||||
|
Hello {name|js|h|j|u|uc}!{~n}
|
||||||
|
Hello {name|js|h|j|uc|s}!{~n}
|
||||||
|
Hello {name|js|h|j|uc|u}!{~n}
|
||||||
|
Hello {name|js|h|u|s|j}!{~n}
|
||||||
|
Hello {name|js|h|u|s|uc}!{~n}
|
||||||
|
Hello {name|js|h|u|j|s}!{~n}
|
||||||
|
Hello {name|js|h|u|j|uc}!{~n}
|
||||||
|
Hello {name|js|h|u|uc|s}!{~n}
|
||||||
|
Hello {name|js|h|u|uc|j}!{~n}
|
||||||
|
Hello {name|js|h|uc|s|j}!{~n}
|
||||||
|
Hello {name|js|h|uc|s|u}!{~n}
|
||||||
|
Hello {name|js|h|uc|j|s}!{~n}
|
||||||
|
Hello {name|js|h|uc|j|u}!{~n}
|
||||||
|
Hello {name|js|h|uc|u|s}!{~n}
|
||||||
|
Hello {name|js|h|uc|u|j}!{~n}
|
||||||
|
Hello {name|js|j|s|h|u}!{~n}
|
||||||
|
Hello {name|js|j|s|h|uc}!{~n}
|
||||||
|
Hello {name|js|j|s|u|h}!{~n}
|
||||||
|
Hello {name|js|j|s|u|uc}!{~n}
|
||||||
|
Hello {name|js|j|s|uc|h}!{~n}
|
||||||
|
Hello {name|js|j|s|uc|u}!{~n}
|
||||||
|
Hello {name|js|j|h|s|u}!{~n}
|
||||||
|
Hello {name|js|j|h|s|uc}!{~n}
|
||||||
|
Hello {name|js|j|h|u|s}!{~n}
|
||||||
|
Hello {name|js|j|h|u|uc}!{~n}
|
||||||
|
Hello {name|js|j|h|uc|s}!{~n}
|
||||||
|
Hello {name|js|j|h|uc|u}!{~n}
|
||||||
|
Hello {name|js|j|u|s|h}!{~n}
|
||||||
|
Hello {name|js|j|u|s|uc}!{~n}
|
||||||
|
Hello {name|js|j|u|h|s}!{~n}
|
||||||
|
Hello {name|js|j|u|h|uc}!{~n}
|
||||||
|
Hello {name|js|j|u|uc|s}!{~n}
|
||||||
|
Hello {name|js|j|u|uc|h}!{~n}
|
||||||
|
Hello {name|js|j|uc|s|h}!{~n}
|
||||||
|
Hello {name|js|j|uc|s|u}!{~n}
|
||||||
|
Hello {name|js|j|uc|h|s}!{~n}
|
||||||
|
Hello {name|js|j|uc|h|u}!{~n}
|
||||||
|
Hello {name|js|j|uc|u|s}!{~n}
|
||||||
|
Hello {name|js|j|uc|u|h}!{~n}
|
||||||
|
Hello {name|js|u|s|h|j}!{~n}
|
||||||
|
Hello {name|js|u|s|h|uc}!{~n}
|
||||||
|
Hello {name|js|u|s|j|h}!{~n}
|
||||||
|
Hello {name|js|u|s|j|uc}!{~n}
|
||||||
|
Hello {name|js|u|s|uc|h}!{~n}
|
||||||
|
Hello {name|js|u|s|uc|j}!{~n}
|
||||||
|
Hello {name|js|u|h|s|j}!{~n}
|
||||||
|
Hello {name|js|u|h|s|uc}!{~n}
|
||||||
|
Hello {name|js|u|h|j|s}!{~n}
|
||||||
|
Hello {name|js|u|h|j|uc}!{~n}
|
||||||
|
Hello {name|js|u|h|uc|s}!{~n}
|
||||||
|
Hello {name|js|u|h|uc|j}!{~n}
|
||||||
|
Hello {name|js|u|j|s|h}!{~n}
|
||||||
|
Hello {name|js|u|j|s|uc}!{~n}
|
||||||
|
Hello {name|js|u|j|h|s}!{~n}
|
||||||
|
Hello {name|js|u|j|h|uc}!{~n}
|
||||||
|
Hello {name|js|u|j|uc|s}!{~n}
|
||||||
|
Hello {name|js|u|j|uc|h}!{~n}
|
||||||
|
Hello {name|js|u|uc|s|h}!{~n}
|
||||||
|
Hello {name|js|u|uc|s|j}!{~n}
|
||||||
|
Hello {name|js|u|uc|h|s}!{~n}
|
||||||
|
Hello {name|js|u|uc|h|j}!{~n}
|
||||||
|
Hello {name|js|u|uc|j|s}!{~n}
|
||||||
|
Hello {name|js|u|uc|j|h}!{~n}
|
||||||
|
Hello {name|js|uc|s|h|j}!{~n}
|
||||||
|
Hello {name|js|uc|s|h|u}!{~n}
|
||||||
|
Hello {name|js|uc|s|j|h}!{~n}
|
||||||
|
Hello {name|js|uc|s|j|u}!{~n}
|
||||||
|
Hello {name|js|uc|s|u|h}!{~n}
|
||||||
|
Hello {name|js|uc|s|u|j}!{~n}
|
||||||
|
Hello {name|js|uc|h|s|j}!{~n}
|
||||||
|
Hello {name|js|uc|h|s|u}!{~n}
|
||||||
|
Hello {name|js|uc|h|j|s}!{~n}
|
||||||
|
Hello {name|js|uc|h|j|u}!{~n}
|
||||||
|
Hello {name|js|uc|h|u|s}!{~n}
|
||||||
|
Hello {name|js|uc|h|u|j}!{~n}
|
||||||
|
Hello {name|js|uc|j|s|h}!{~n}
|
||||||
|
Hello {name|js|uc|j|s|u}!{~n}
|
||||||
|
Hello {name|js|uc|j|h|s}!{~n}
|
||||||
|
Hello {name|js|uc|j|h|u}!{~n}
|
||||||
|
Hello {name|js|uc|j|u|s}!{~n}
|
||||||
|
Hello {name|js|uc|j|u|h}!{~n}
|
||||||
|
Hello {name|js|uc|u|s|h}!{~n}
|
||||||
|
Hello {name|js|uc|u|s|j}!{~n}
|
||||||
|
Hello {name|js|uc|u|h|s}!{~n}
|
||||||
|
Hello {name|js|uc|u|h|j}!{~n}
|
||||||
|
Hello {name|js|uc|u|j|s}!{~n}
|
||||||
|
Hello {name|js|uc|u|j|h}!{~n}
|
3
js/test_cases/generated_filters_two/null.json
Normal file
3
js/test_cases/generated_filters_two/null.json
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"name": null
|
||||||
|
}
|
5
js/test_cases/generated_filters_two/object.json
Normal file
5
js/test_cases/generated_filters_two/object.json
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"name": {
|
||||||
|
"foo": "bar"
|
||||||
|
}
|
||||||
|
}
|
3
js/test_cases/generated_filters_two/string.json
Normal file
3
js/test_cases/generated_filters_two/string.json
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"name": "{\"foo\": \"bar\"}"
|
||||||
|
}
|
174
src/bin.rs
174
src/bin.rs
@ -73,11 +73,178 @@ fn read_context_from_stdin() -> serde_json::Value {
|
|||||||
serde_json::from_str(&buffer).expect("Failed to parse json")
|
serde_json::from_str(&buffer).expect("Failed to parse json")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn html_escape(inp: &str) -> String {
|
||||||
|
// Adding 10% space from the original to avoid re-allocations by
|
||||||
|
// leaving room for escaped sequences.
|
||||||
|
let mut output = String::with_capacity(((inp.len() as f64) * 1.1) as usize);
|
||||||
|
inp.chars().for_each(|c| match c {
|
||||||
|
'<' => output.push_str("<"),
|
||||||
|
'>' => output.push_str(">"),
|
||||||
|
'"' => output.push_str("""),
|
||||||
|
'\'' => output.push_str("'"),
|
||||||
|
'&' => output.push_str("&"),
|
||||||
|
_ => output.push(c),
|
||||||
|
});
|
||||||
|
output
|
||||||
|
}
|
||||||
|
|
||||||
|
fn javascript_escape(inp: &str) -> String {
|
||||||
|
// Adding 10% space from the original to avoid re-allocations by
|
||||||
|
// leaving room for escaped sequences.
|
||||||
|
let mut output = String::with_capacity(((inp.len() as f64) * 1.1) as usize);
|
||||||
|
inp.chars().for_each(|c| match c {
|
||||||
|
'"' => output.push_str(r#"\""#),
|
||||||
|
'\'' => output.push_str(r#"\'"#),
|
||||||
|
'\t' => output.push_str(r#"\t"#),
|
||||||
|
'\x0C' => output.push_str(r#"\f"#),
|
||||||
|
'\n' => output.push_str(r#"\n"#),
|
||||||
|
'\r' => output.push_str(r#"\r"#),
|
||||||
|
'\\' => output.push_str(r#"\\"#),
|
||||||
|
'/' => output.push_str(r#"\/"#),
|
||||||
|
_ => output.push(c),
|
||||||
|
});
|
||||||
|
output
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_utf8_hex(inp: char) -> String {
|
||||||
|
let num_bytes = inp.len_utf8();
|
||||||
|
let mut byte_buffer = [0; 4]; // UTF-8 supports up to 4 bytes per codepoint
|
||||||
|
let mut output = String::with_capacity(num_bytes * 2);
|
||||||
|
|
||||||
|
inp.encode_utf8(&mut byte_buffer);
|
||||||
|
|
||||||
|
for b in &byte_buffer[..num_bytes] {
|
||||||
|
output.push_str(&format!("{:02X}", b));
|
||||||
|
}
|
||||||
|
|
||||||
|
output
|
||||||
|
}
|
||||||
|
|
||||||
|
fn encode_uri(inp: &str) -> String {
|
||||||
|
// Adding 10% space from the original to avoid re-allocations by
|
||||||
|
// leaving room for escaped sequences.
|
||||||
|
let mut output = String::with_capacity(((inp.len() as f64) * 1.1) as usize);
|
||||||
|
inp.chars().for_each(|c| match c {
|
||||||
|
'0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | 'a' | 'b' | 'c' | 'd' | 'e'
|
||||||
|
| 'f' | 'g' | 'h' | 'i' | 'j' | 'k' | 'l' | 'm' | 'n' | 'o' | 'p' | 'q' | 'r' | 's'
|
||||||
|
| 't' | 'u' | 'v' | 'w' | 'x' | 'y' | 'z' | 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G'
|
||||||
|
| 'H' | 'I' | 'J' | 'K' | 'L' | 'M' | 'N' | 'O' | 'P' | 'Q' | 'R' | 'S' | 'T' | 'U'
|
||||||
|
| 'V' | 'W' | 'X' | 'Y' | 'Z' | ';' | ',' | '/' | '?' | ':' | '@' | '&' | '=' | '+'
|
||||||
|
| '$' | '-' | '_' | '.' | '!' | '~' | '*' | '\'' | '(' | ')' | '#' => output.push(c),
|
||||||
|
_ => {
|
||||||
|
output.push('%');
|
||||||
|
output.push_str(&get_utf8_hex(c));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
output
|
||||||
|
}
|
||||||
|
|
||||||
|
fn encode_uri_component(inp: &str) -> String {
|
||||||
|
// Adding 10% space from the original to avoid re-allocations by
|
||||||
|
// leaving room for escaped sequences.
|
||||||
|
let mut output = String::with_capacity(((inp.len() as f64) * 1.1) as usize);
|
||||||
|
inp.chars().for_each(|c| match c {
|
||||||
|
'0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | 'a' | 'b' | 'c' | 'd' | 'e'
|
||||||
|
| 'f' | 'g' | 'h' | 'i' | 'j' | 'k' | 'l' | 'm' | 'n' | 'o' | 'p' | 'q' | 'r' | 's'
|
||||||
|
| 't' | 'u' | 'v' | 'w' | 'x' | 'y' | 'z' | 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G'
|
||||||
|
| 'H' | 'I' | 'J' | 'K' | 'L' | 'M' | 'N' | 'O' | 'P' | 'Q' | 'R' | 'S' | 'T' | 'U'
|
||||||
|
| 'V' | 'W' | 'X' | 'Y' | 'Z' | '-' | '_' | '.' | '!' | '~' | '*' | '\'' | '(' | ')' => {
|
||||||
|
output.push(c)
|
||||||
|
}
|
||||||
|
_ => {
|
||||||
|
output.push('%');
|
||||||
|
output.push_str(&get_utf8_hex(c));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
output
|
||||||
|
}
|
||||||
|
|
||||||
|
fn apply_filter(
|
||||||
|
json_value: &serde_json::Value,
|
||||||
|
filter: &Filter,
|
||||||
|
) -> Result<serde_json::Value, RenderError> {
|
||||||
|
match (json_value, filter) {
|
||||||
|
// Html escape filter
|
||||||
|
(serde_json::Value::String(string), Filter::HtmlEncode) => {
|
||||||
|
Ok(serde_json::Value::String(html_escape(string)))
|
||||||
|
}
|
||||||
|
(_, Filter::HtmlEncode) => Ok(serde_json::Value::String(html_escape(
|
||||||
|
&json_value.render(&Vec::new())?,
|
||||||
|
))),
|
||||||
|
// Disable html escape filter
|
||||||
|
(_, Filter::DisableHtmlEncode) => panic!("The |s filter is automatically removed by the renderer since it is a no-op during rendering."),
|
||||||
|
// Parse JSON filter
|
||||||
|
(serde_json::Value::String(string), Filter::JsonParse) => {
|
||||||
|
serde_json::from_str(&string).or(Err(RenderError::InvalidJson(string.to_owned())))
|
||||||
|
}
|
||||||
|
(_, Filter::JsonParse) => {
|
||||||
|
let rendered_value = json_value.render(&Vec::new())?;
|
||||||
|
serde_json::from_str(&rendered_value).or(Err(RenderError::InvalidJson(rendered_value)))
|
||||||
|
}
|
||||||
|
// Json Stringify filter
|
||||||
|
(_, Filter::JsonStringify) => {
|
||||||
|
Ok(serde_json::Value::String(json_value.to_string()))
|
||||||
|
}
|
||||||
|
// Javascript escape filter
|
||||||
|
(serde_json::Value::String(string), Filter::JavascriptStringEncode) => {
|
||||||
|
Ok(serde_json::Value::String(javascript_escape(string)))
|
||||||
|
}
|
||||||
|
(serde_json::Value::Bool(boolean), Filter::JavascriptStringEncode) => {
|
||||||
|
Ok(serde_json::Value::Bool(*boolean))
|
||||||
|
}
|
||||||
|
(serde_json::Value::Number(number), Filter::JavascriptStringEncode) => {
|
||||||
|
Ok(serde_json::Value::Number(number.clone()))
|
||||||
|
}
|
||||||
|
(serde_json::Value::Array(arr), Filter::JavascriptStringEncode) => {
|
||||||
|
Ok(serde_json::Value::Array(arr.clone()))
|
||||||
|
}
|
||||||
|
(serde_json::Value::Object(obj), Filter::JavascriptStringEncode) => {
|
||||||
|
Ok(serde_json::Value::Object(obj.clone()))
|
||||||
|
}
|
||||||
|
(_, Filter::JavascriptStringEncode) => Ok(serde_json::Value::String(javascript_escape(
|
||||||
|
&json_value.render(&Vec::new())?,
|
||||||
|
))),
|
||||||
|
// EncodeURI filter
|
||||||
|
(serde_json::Value::String(string), Filter::EncodeUri) => {
|
||||||
|
Ok(serde_json::Value::String(encode_uri(string)))
|
||||||
|
}
|
||||||
|
(_, Filter::EncodeUri) => Ok(serde_json::Value::String(encode_uri(
|
||||||
|
&json_value.render(&Vec::new())?,
|
||||||
|
))),
|
||||||
|
// EncodeURIComponent filter
|
||||||
|
(serde_json::Value::String(string), Filter::EncodeUriComponent) => {
|
||||||
|
Ok(serde_json::Value::String(encode_uri_component(string)))
|
||||||
|
}
|
||||||
|
(_, Filter::EncodeUriComponent) => Ok(serde_json::Value::String(encode_uri_component(
|
||||||
|
&json_value.render(&Vec::new())?,
|
||||||
|
))),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn apply_filters(
|
||||||
|
json_value: &serde_json::Value,
|
||||||
|
filters: &[Filter],
|
||||||
|
) -> Result<serde_json::Value, RenderError> {
|
||||||
|
let mut final_value: serde_json::Value = apply_filter(json_value, &filters[0])?;
|
||||||
|
|
||||||
|
for filter in &filters[1..] {
|
||||||
|
final_value = apply_filter(&final_value, filter)?;
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(final_value)
|
||||||
|
}
|
||||||
|
|
||||||
impl ContextElement for serde_json::Value {}
|
impl ContextElement for serde_json::Value {}
|
||||||
|
|
||||||
impl Renderable for serde_json::Value {
|
impl Renderable for serde_json::Value {
|
||||||
fn render(&self, _filters: &Vec<Filter>) -> Result<String, RenderError> {
|
fn render(&self, _filters: &Vec<Filter>) -> Result<String, RenderError> {
|
||||||
match self {
|
let after_apply = if _filters.is_empty() {
|
||||||
|
None
|
||||||
|
} else {
|
||||||
|
Some(apply_filters(self, _filters)?)
|
||||||
|
};
|
||||||
|
|
||||||
|
match after_apply.as_ref().unwrap_or(self) {
|
||||||
serde_json::Value::Null => Ok("".to_owned()),
|
serde_json::Value::Null => Ok("".to_owned()),
|
||||||
serde_json::Value::Bool(boolean) => Ok(boolean.to_string()),
|
serde_json::Value::Bool(boolean) => Ok(boolean.to_string()),
|
||||||
serde_json::Value::Number(num) => Ok(num.to_string()),
|
serde_json::Value::Number(num) => Ok(num.to_string()),
|
||||||
@ -395,4 +562,9 @@ mod tests {
|
|||||||
Ok::<_, RenderError>("3,5,7,9".to_owned())
|
Ok::<_, RenderError>("3,5,7,9".to_owned())
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_html_escape() {
|
||||||
|
assert_eq!(html_escape("<>&\"'"), "<>&"'".to_owned())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@ use std::fmt;
|
|||||||
pub enum RenderError {
|
pub enum RenderError {
|
||||||
Generic(String),
|
Generic(String),
|
||||||
TemplateNotFound(String),
|
TemplateNotFound(String),
|
||||||
|
InvalidJson(String),
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(PartialEq)]
|
#[derive(PartialEq)]
|
||||||
@ -27,6 +28,11 @@ impl fmt::Display for RenderError {
|
|||||||
RenderError::TemplateNotFound(name) => {
|
RenderError::TemplateNotFound(name) => {
|
||||||
write!(f, "No template named {} in context", name)
|
write!(f, "No template named {} in context", name)
|
||||||
}
|
}
|
||||||
|
RenderError::InvalidJson(invalid_json) => write!(
|
||||||
|
f,
|
||||||
|
"Attempted to parse the following invalid JSON: {}",
|
||||||
|
invalid_json
|
||||||
|
),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -38,6 +44,11 @@ impl fmt::Debug for RenderError {
|
|||||||
RenderError::TemplateNotFound(name) => {
|
RenderError::TemplateNotFound(name) => {
|
||||||
write!(f, "No template named {} in context", name)
|
write!(f, "No template named {} in context", name)
|
||||||
}
|
}
|
||||||
|
RenderError::InvalidJson(invalid_json) => write!(
|
||||||
|
f,
|
||||||
|
"Attempted to parse the following invalid JSON: {}",
|
||||||
|
invalid_json
|
||||||
|
),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,7 @@ use crate::parser::PartialNameElement;
|
|||||||
use crate::parser::RValue;
|
use crate::parser::RValue;
|
||||||
use crate::parser::Special;
|
use crate::parser::Special;
|
||||||
use crate::parser::Template;
|
use crate::parser::Template;
|
||||||
use crate::parser::TemplateElement;
|
use crate::parser::{Filter, TemplateElement};
|
||||||
use crate::renderer::context_element::ContextElement;
|
use crate::renderer::context_element::ContextElement;
|
||||||
use crate::renderer::errors::CompileError;
|
use crate::renderer::errors::CompileError;
|
||||||
use crate::renderer::errors::RenderError;
|
use crate::renderer::errors::RenderError;
|
||||||
@ -15,7 +15,7 @@ use crate::renderer::inline_partial_tree::extract_inline_partials;
|
|||||||
use crate::renderer::inline_partial_tree::InlinePartialTreeElement;
|
use crate::renderer::inline_partial_tree::InlinePartialTreeElement;
|
||||||
use crate::renderer::parameters_context::ParametersContext;
|
use crate::renderer::parameters_context::ParametersContext;
|
||||||
use crate::renderer::walking::walk_path;
|
use crate::renderer::walking::walk_path;
|
||||||
use std::{cmp::Ordering, collections::HashMap};
|
use std::collections::HashMap;
|
||||||
|
|
||||||
#[derive(Clone, Debug)]
|
#[derive(Clone, Debug)]
|
||||||
pub struct CompiledTemplate<'a> {
|
pub struct CompiledTemplate<'a> {
|
||||||
@ -153,7 +153,7 @@ impl<'a> DustRenderer<'a> {
|
|||||||
if loop_elements.is_empty() {
|
if loop_elements.is_empty() {
|
||||||
return Ok("".to_owned());
|
return Ok("".to_owned());
|
||||||
} else {
|
} else {
|
||||||
return final_val.render(&reference.filters);
|
return final_val.render(&Self::preprocess_filters(&reference.filters));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -500,6 +500,21 @@ impl<'a> DustRenderer<'a> {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn preprocess_filters(filters: &Vec<Filter>) -> Vec<Filter> {
|
||||||
|
let mut final_filters: Vec<Filter> = filters
|
||||||
|
.into_iter()
|
||||||
|
.filter(|f| f != &&Filter::DisableHtmlEncode)
|
||||||
|
.map(|f| f.clone())
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
// If the user has not specified any escaping filter (|s or
|
||||||
|
// |h), automatically add an html escape filter
|
||||||
|
if !filters.iter().any(|f| f == &Filter::DisableHtmlEncode) {
|
||||||
|
final_filters.push(Filter::HtmlEncode);
|
||||||
|
}
|
||||||
|
final_filters
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
@ -510,6 +525,7 @@ mod tests {
|
|||||||
use crate::renderer::context_element::Renderable;
|
use crate::renderer::context_element::Renderable;
|
||||||
use crate::renderer::context_element::Walkable;
|
use crate::renderer::context_element::Walkable;
|
||||||
use crate::renderer::CompareContextElement;
|
use crate::renderer::CompareContextElement;
|
||||||
|
use std::cmp::Ordering;
|
||||||
|
|
||||||
impl ContextElement for String {}
|
impl ContextElement for String {}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user