liquid 2.6.3 → 5.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/History.md +272 -26
- data/README.md +67 -3
- data/lib/liquid/block.rb +62 -94
- data/lib/liquid/block_body.rb +255 -0
- data/lib/liquid/condition.rb +96 -38
- data/lib/liquid/context.rb +172 -154
- data/lib/liquid/document.rb +57 -9
- data/lib/liquid/drop.rb +33 -14
- data/lib/liquid/errors.rb +56 -10
- data/lib/liquid/expression.rb +45 -0
- data/lib/liquid/extensions.rb +21 -7
- data/lib/liquid/file_system.rb +27 -14
- data/lib/liquid/forloop_drop.rb +92 -0
- data/lib/liquid/i18n.rb +41 -0
- data/lib/liquid/interrupts.rb +3 -2
- data/lib/liquid/lexer.rb +62 -0
- data/lib/liquid/locales/en.yml +29 -0
- data/lib/liquid/parse_context.rb +54 -0
- data/lib/liquid/parse_tree_visitor.rb +42 -0
- data/lib/liquid/parser.rb +102 -0
- data/lib/liquid/parser_switching.rb +45 -0
- data/lib/liquid/partial_cache.rb +24 -0
- data/lib/liquid/profiler/hooks.rb +35 -0
- data/lib/liquid/profiler.rb +139 -0
- data/lib/liquid/range_lookup.rb +47 -0
- data/lib/liquid/registers.rb +51 -0
- data/lib/liquid/resource_limits.rb +62 -0
- data/lib/liquid/standardfilters.rb +789 -118
- data/lib/liquid/strainer_factory.rb +41 -0
- data/lib/liquid/strainer_template.rb +62 -0
- data/lib/liquid/tablerowloop_drop.rb +121 -0
- data/lib/liquid/tag/disableable.rb +22 -0
- data/lib/liquid/tag/disabler.rb +21 -0
- data/lib/liquid/tag.rb +49 -10
- data/lib/liquid/tags/assign.rb +61 -19
- data/lib/liquid/tags/break.rb +14 -4
- data/lib/liquid/tags/capture.rb +29 -21
- data/lib/liquid/tags/case.rb +80 -31
- data/lib/liquid/tags/comment.rb +24 -2
- data/lib/liquid/tags/continue.rb +14 -13
- data/lib/liquid/tags/cycle.rb +50 -32
- data/lib/liquid/tags/decrement.rb +24 -26
- data/lib/liquid/tags/echo.rb +41 -0
- data/lib/liquid/tags/for.rb +164 -100
- data/lib/liquid/tags/if.rb +105 -44
- data/lib/liquid/tags/ifchanged.rb +10 -11
- data/lib/liquid/tags/include.rb +85 -65
- data/lib/liquid/tags/increment.rb +24 -22
- data/lib/liquid/tags/inline_comment.rb +43 -0
- data/lib/liquid/tags/raw.rb +50 -11
- data/lib/liquid/tags/render.rb +109 -0
- data/lib/liquid/tags/table_row.rb +88 -0
- data/lib/liquid/tags/unless.rb +37 -21
- data/lib/liquid/template.rb +124 -46
- data/lib/liquid/template_factory.rb +9 -0
- data/lib/liquid/tokenizer.rb +39 -0
- data/lib/liquid/usage.rb +8 -0
- data/lib/liquid/utils.rb +68 -5
- data/lib/liquid/variable.rb +128 -32
- data/lib/liquid/variable_lookup.rb +96 -0
- data/lib/liquid/version.rb +3 -1
- data/lib/liquid.rb +36 -13
- metadata +69 -77
- data/lib/extras/liquid_view.rb +0 -51
- data/lib/liquid/htmltags.rb +0 -73
- data/lib/liquid/module_ex.rb +0 -62
- data/lib/liquid/strainer.rb +0 -53
- data/test/liquid/assign_test.rb +0 -21
- data/test/liquid/block_test.rb +0 -58
- data/test/liquid/capture_test.rb +0 -40
- data/test/liquid/condition_test.rb +0 -127
- data/test/liquid/context_test.rb +0 -478
- data/test/liquid/drop_test.rb +0 -180
- data/test/liquid/error_handling_test.rb +0 -81
- data/test/liquid/file_system_test.rb +0 -29
- data/test/liquid/filter_test.rb +0 -125
- data/test/liquid/hash_ordering_test.rb +0 -25
- data/test/liquid/module_ex_test.rb +0 -87
- data/test/liquid/output_test.rb +0 -116
- data/test/liquid/parsing_quirks_test.rb +0 -52
- data/test/liquid/regexp_test.rb +0 -44
- data/test/liquid/security_test.rb +0 -64
- data/test/liquid/standard_filter_test.rb +0 -263
- data/test/liquid/strainer_test.rb +0 -52
- data/test/liquid/tags/break_tag_test.rb +0 -16
- data/test/liquid/tags/continue_tag_test.rb +0 -16
- data/test/liquid/tags/for_tag_test.rb +0 -297
- data/test/liquid/tags/html_tag_test.rb +0 -63
- data/test/liquid/tags/if_else_tag_test.rb +0 -166
- data/test/liquid/tags/include_tag_test.rb +0 -166
- data/test/liquid/tags/increment_tag_test.rb +0 -24
- data/test/liquid/tags/raw_tag_test.rb +0 -24
- data/test/liquid/tags/standard_tag_test.rb +0 -295
- data/test/liquid/tags/statements_test.rb +0 -134
- data/test/liquid/tags/unless_else_tag_test.rb +0 -26
- data/test/liquid/template_test.rb +0 -146
- data/test/liquid/variable_test.rb +0 -186
- data/test/test_helper.rb +0 -29
- /data/{MIT-LICENSE → LICENSE} +0 -0
@@ -1,186 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class VariableTest < Test::Unit::TestCase
|
4
|
-
include Liquid
|
5
|
-
|
6
|
-
def test_variable
|
7
|
-
var = Variable.new('hello')
|
8
|
-
assert_equal 'hello', var.name
|
9
|
-
end
|
10
|
-
|
11
|
-
def test_filters
|
12
|
-
var = Variable.new('hello | textileze')
|
13
|
-
assert_equal 'hello', var.name
|
14
|
-
assert_equal [["textileze",[]]], var.filters
|
15
|
-
|
16
|
-
var = Variable.new('hello | textileze | paragraph')
|
17
|
-
assert_equal 'hello', var.name
|
18
|
-
assert_equal [["textileze",[]], ["paragraph",[]]], var.filters
|
19
|
-
|
20
|
-
var = Variable.new(%! hello | strftime: '%Y'!)
|
21
|
-
assert_equal 'hello', var.name
|
22
|
-
assert_equal [["strftime",["'%Y'"]]], var.filters
|
23
|
-
|
24
|
-
var = Variable.new(%! 'typo' | link_to: 'Typo', true !)
|
25
|
-
assert_equal %!'typo'!, var.name
|
26
|
-
assert_equal [["link_to",["'Typo'", "true"]]], var.filters
|
27
|
-
|
28
|
-
var = Variable.new(%! 'typo' | link_to: 'Typo', false !)
|
29
|
-
assert_equal %!'typo'!, var.name
|
30
|
-
assert_equal [["link_to",["'Typo'", "false"]]], var.filters
|
31
|
-
|
32
|
-
var = Variable.new(%! 'foo' | repeat: 3 !)
|
33
|
-
assert_equal %!'foo'!, var.name
|
34
|
-
assert_equal [["repeat",["3"]]], var.filters
|
35
|
-
|
36
|
-
var = Variable.new(%! 'foo' | repeat: 3, 3 !)
|
37
|
-
assert_equal %!'foo'!, var.name
|
38
|
-
assert_equal [["repeat",["3","3"]]], var.filters
|
39
|
-
|
40
|
-
var = Variable.new(%! 'foo' | repeat: 3, 3, 3 !)
|
41
|
-
assert_equal %!'foo'!, var.name
|
42
|
-
assert_equal [["repeat",["3","3","3"]]], var.filters
|
43
|
-
|
44
|
-
var = Variable.new(%! hello | strftime: '%Y, okay?'!)
|
45
|
-
assert_equal 'hello', var.name
|
46
|
-
assert_equal [["strftime",["'%Y, okay?'"]]], var.filters
|
47
|
-
|
48
|
-
var = Variable.new(%! hello | things: "%Y, okay?", 'the other one'!)
|
49
|
-
assert_equal 'hello', var.name
|
50
|
-
assert_equal [["things",["\"%Y, okay?\"","'the other one'"]]], var.filters
|
51
|
-
end
|
52
|
-
|
53
|
-
def test_filter_with_date_parameter
|
54
|
-
|
55
|
-
var = Variable.new(%! '2006-06-06' | date: "%m/%d/%Y"!)
|
56
|
-
assert_equal "'2006-06-06'", var.name
|
57
|
-
assert_equal [["date",["\"%m/%d/%Y\""]]], var.filters
|
58
|
-
|
59
|
-
end
|
60
|
-
|
61
|
-
def test_filters_without_whitespace
|
62
|
-
var = Variable.new('hello | textileze | paragraph')
|
63
|
-
assert_equal 'hello', var.name
|
64
|
-
assert_equal [["textileze",[]], ["paragraph",[]]], var.filters
|
65
|
-
|
66
|
-
var = Variable.new('hello|textileze|paragraph')
|
67
|
-
assert_equal 'hello', var.name
|
68
|
-
assert_equal [["textileze",[]], ["paragraph",[]]], var.filters
|
69
|
-
|
70
|
-
var = Variable.new("hello|replace:'foo','bar'|textileze")
|
71
|
-
assert_equal 'hello', var.name
|
72
|
-
assert_equal [["replace", ["'foo'", "'bar'"]], ["textileze", []]], var.filters
|
73
|
-
end
|
74
|
-
|
75
|
-
def test_symbol
|
76
|
-
var = Variable.new("http://disney.com/logo.gif | image: 'med' ")
|
77
|
-
assert_equal 'http://disney.com/logo.gif', var.name
|
78
|
-
assert_equal [["image",["'med'"]]], var.filters
|
79
|
-
end
|
80
|
-
|
81
|
-
def test_string_single_quoted
|
82
|
-
var = Variable.new(%| "hello" |)
|
83
|
-
assert_equal '"hello"', var.name
|
84
|
-
end
|
85
|
-
|
86
|
-
def test_string_double_quoted
|
87
|
-
var = Variable.new(%| 'hello' |)
|
88
|
-
assert_equal "'hello'", var.name
|
89
|
-
end
|
90
|
-
|
91
|
-
def test_integer
|
92
|
-
var = Variable.new(%| 1000 |)
|
93
|
-
assert_equal "1000", var.name
|
94
|
-
end
|
95
|
-
|
96
|
-
def test_float
|
97
|
-
var = Variable.new(%| 1000.01 |)
|
98
|
-
assert_equal "1000.01", var.name
|
99
|
-
end
|
100
|
-
|
101
|
-
def test_string_with_special_chars
|
102
|
-
var = Variable.new(%| 'hello! $!@.;"ddasd" ' |)
|
103
|
-
assert_equal %|'hello! $!@.;"ddasd" '|, var.name
|
104
|
-
end
|
105
|
-
|
106
|
-
def test_string_dot
|
107
|
-
var = Variable.new(%| test.test |)
|
108
|
-
assert_equal 'test.test', var.name
|
109
|
-
end
|
110
|
-
|
111
|
-
def test_filter_with_keyword_arguments
|
112
|
-
var = Variable.new(%! hello | things: greeting: "world", farewell: 'goodbye'!)
|
113
|
-
assert_equal 'hello', var.name
|
114
|
-
assert_equal [['things',["greeting: \"world\"","farewell: 'goodbye'"]]], var.filters
|
115
|
-
end
|
116
|
-
|
117
|
-
def test_lax_filter_argument_parsing
|
118
|
-
var = Variable.new(%! number_of_comments | pluralize: 'comment': 'comments' !)
|
119
|
-
assert_equal 'number_of_comments', var.name
|
120
|
-
assert_equal [['pluralize',["'comment'","'comments'"]]], var.filters
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
|
-
|
125
|
-
class VariableResolutionTest < Test::Unit::TestCase
|
126
|
-
include Liquid
|
127
|
-
|
128
|
-
def test_simple_variable
|
129
|
-
template = Template.parse(%|{{test}}|)
|
130
|
-
assert_equal 'worked', template.render('test' => 'worked')
|
131
|
-
assert_equal 'worked wonderfully', template.render('test' => 'worked wonderfully')
|
132
|
-
end
|
133
|
-
|
134
|
-
def test_simple_with_whitespaces
|
135
|
-
template = Template.parse(%| {{ test }} |)
|
136
|
-
assert_equal ' worked ', template.render('test' => 'worked')
|
137
|
-
assert_equal ' worked wonderfully ', template.render('test' => 'worked wonderfully')
|
138
|
-
end
|
139
|
-
|
140
|
-
def test_ignore_unknown
|
141
|
-
template = Template.parse(%|{{ test }}|)
|
142
|
-
assert_equal '', template.render
|
143
|
-
end
|
144
|
-
|
145
|
-
def test_hash_scoping
|
146
|
-
template = Template.parse(%|{{ test.test }}|)
|
147
|
-
assert_equal 'worked', template.render('test' => {'test' => 'worked'})
|
148
|
-
end
|
149
|
-
|
150
|
-
def test_preset_assigns
|
151
|
-
template = Template.parse(%|{{ test }}|)
|
152
|
-
template.assigns['test'] = 'worked'
|
153
|
-
assert_equal 'worked', template.render
|
154
|
-
end
|
155
|
-
|
156
|
-
def test_reuse_parsed_template
|
157
|
-
template = Template.parse(%|{{ greeting }} {{ name }}|)
|
158
|
-
template.assigns['greeting'] = 'Goodbye'
|
159
|
-
assert_equal 'Hello Tobi', template.render('greeting' => 'Hello', 'name' => 'Tobi')
|
160
|
-
assert_equal 'Hello ', template.render('greeting' => 'Hello', 'unknown' => 'Tobi')
|
161
|
-
assert_equal 'Hello Brian', template.render('greeting' => 'Hello', 'name' => 'Brian')
|
162
|
-
assert_equal 'Goodbye Brian', template.render('name' => 'Brian')
|
163
|
-
assert_equal({'greeting'=>'Goodbye'}, template.assigns)
|
164
|
-
end
|
165
|
-
|
166
|
-
def test_assigns_not_polluted_from_template
|
167
|
-
template = Template.parse(%|{{ test }}{% assign test = 'bar' %}{{ test }}|)
|
168
|
-
template.assigns['test'] = 'baz'
|
169
|
-
assert_equal 'bazbar', template.render
|
170
|
-
assert_equal 'bazbar', template.render
|
171
|
-
assert_equal 'foobar', template.render('test' => 'foo')
|
172
|
-
assert_equal 'bazbar', template.render
|
173
|
-
end
|
174
|
-
|
175
|
-
def test_hash_with_default_proc
|
176
|
-
template = Template.parse(%|Hello {{ test }}|)
|
177
|
-
assigns = Hash.new { |h,k| raise "Unknown variable '#{k}'" }
|
178
|
-
assigns['test'] = 'Tobi'
|
179
|
-
assert_equal 'Hello Tobi', template.render!(assigns)
|
180
|
-
assigns.delete('test')
|
181
|
-
e = assert_raises(RuntimeError) {
|
182
|
-
template.render!(assigns)
|
183
|
-
}
|
184
|
-
assert_equal "Unknown variable 'test'", e.message
|
185
|
-
end
|
186
|
-
end # VariableTest
|
data/test/test_helper.rb
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'test/unit'
|
4
|
-
require 'test/unit/assertions'
|
5
|
-
begin
|
6
|
-
require 'ruby-debug'
|
7
|
-
rescue LoadError
|
8
|
-
puts "Couldn't load ruby-debug. gem install ruby-debug if you need it."
|
9
|
-
end
|
10
|
-
require File.join(File.dirname(__FILE__), '..', 'lib', 'liquid')
|
11
|
-
|
12
|
-
|
13
|
-
module Test
|
14
|
-
module Unit
|
15
|
-
module Assertions
|
16
|
-
include Liquid
|
17
|
-
|
18
|
-
def assert_template_result(expected, template, assigns = {}, message = nil)
|
19
|
-
assert_equal expected, Template.parse(template).render(assigns)
|
20
|
-
end
|
21
|
-
|
22
|
-
def assert_template_result_matches(expected, template, assigns = {}, message = nil)
|
23
|
-
return assert_template_result(expected, template, assigns, message) unless expected.is_a? Regexp
|
24
|
-
|
25
|
-
assert_match expected, Template.parse(template).render(assigns)
|
26
|
-
end
|
27
|
-
end # Assertions
|
28
|
-
end # Unit
|
29
|
-
end # Test
|
/data/{MIT-LICENSE → LICENSE}
RENAMED
File without changes
|