liquid 3.0.6 → 4.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (95) hide show
  1. checksums.yaml +4 -4
  2. data/History.md +89 -58
  3. data/{MIT-LICENSE → LICENSE} +0 -0
  4. data/lib/liquid.rb +7 -6
  5. data/lib/liquid/block.rb +31 -124
  6. data/lib/liquid/block_body.rb +54 -57
  7. data/lib/liquid/condition.rb +23 -22
  8. data/lib/liquid/context.rb +50 -42
  9. data/lib/liquid/document.rb +19 -9
  10. data/lib/liquid/drop.rb +12 -13
  11. data/lib/liquid/errors.rb +16 -17
  12. data/lib/liquid/expression.rb +15 -3
  13. data/lib/liquid/extensions.rb +7 -7
  14. data/lib/liquid/file_system.rb +3 -3
  15. data/lib/liquid/forloop_drop.rb +42 -0
  16. data/lib/liquid/i18n.rb +5 -5
  17. data/lib/liquid/interrupts.rb +1 -2
  18. data/lib/liquid/lexer.rb +6 -4
  19. data/lib/liquid/locales/en.yml +3 -1
  20. data/lib/liquid/parse_context.rb +37 -0
  21. data/lib/liquid/parser_switching.rb +4 -4
  22. data/lib/liquid/profiler.rb +18 -19
  23. data/lib/liquid/profiler/hooks.rb +7 -7
  24. data/lib/liquid/range_lookup.rb +16 -1
  25. data/lib/liquid/resource_limits.rb +23 -0
  26. data/lib/liquid/standardfilters.rb +101 -56
  27. data/lib/liquid/strainer.rb +4 -5
  28. data/lib/liquid/tablerowloop_drop.rb +62 -0
  29. data/lib/liquid/tag.rb +9 -8
  30. data/lib/liquid/tags/assign.rb +5 -4
  31. data/lib/liquid/tags/break.rb +0 -3
  32. data/lib/liquid/tags/capture.rb +1 -1
  33. data/lib/liquid/tags/case.rb +19 -12
  34. data/lib/liquid/tags/comment.rb +2 -2
  35. data/lib/liquid/tags/cycle.rb +6 -6
  36. data/lib/liquid/tags/decrement.rb +1 -4
  37. data/lib/liquid/tags/for.rb +93 -75
  38. data/lib/liquid/tags/if.rb +49 -44
  39. data/lib/liquid/tags/ifchanged.rb +0 -2
  40. data/lib/liquid/tags/include.rb +60 -52
  41. data/lib/liquid/tags/raw.rb +26 -4
  42. data/lib/liquid/tags/table_row.rb +12 -30
  43. data/lib/liquid/tags/unless.rb +3 -4
  44. data/lib/liquid/template.rb +23 -50
  45. data/lib/liquid/tokenizer.rb +31 -0
  46. data/lib/liquid/utils.rb +48 -8
  47. data/lib/liquid/variable.rb +46 -45
  48. data/lib/liquid/variable_lookup.rb +3 -3
  49. data/lib/liquid/version.rb +1 -1
  50. data/test/integration/assign_test.rb +8 -8
  51. data/test/integration/blank_test.rb +14 -14
  52. data/test/integration/context_test.rb +2 -2
  53. data/test/integration/document_test.rb +19 -0
  54. data/test/integration/drop_test.rb +42 -40
  55. data/test/integration/error_handling_test.rb +64 -45
  56. data/test/integration/filter_test.rb +60 -20
  57. data/test/integration/output_test.rb +26 -27
  58. data/test/integration/parsing_quirks_test.rb +15 -13
  59. data/test/integration/render_profiling_test.rb +20 -20
  60. data/test/integration/security_test.rb +5 -7
  61. data/test/integration/standard_filter_test.rb +119 -37
  62. data/test/integration/tags/break_tag_test.rb +1 -2
  63. data/test/integration/tags/continue_tag_test.rb +0 -1
  64. data/test/integration/tags/for_tag_test.rb +133 -98
  65. data/test/integration/tags/if_else_tag_test.rb +75 -77
  66. data/test/integration/tags/include_tag_test.rb +23 -30
  67. data/test/integration/tags/increment_tag_test.rb +10 -11
  68. data/test/integration/tags/raw_tag_test.rb +7 -1
  69. data/test/integration/tags/standard_tag_test.rb +121 -122
  70. data/test/integration/tags/statements_test.rb +3 -5
  71. data/test/integration/tags/table_row_test.rb +20 -19
  72. data/test/integration/tags/unless_else_tag_test.rb +6 -6
  73. data/test/integration/template_test.rb +91 -45
  74. data/test/integration/variable_test.rb +23 -13
  75. data/test/test_helper.rb +33 -5
  76. data/test/unit/block_unit_test.rb +6 -5
  77. data/test/unit/condition_unit_test.rb +82 -77
  78. data/test/unit/context_unit_test.rb +48 -57
  79. data/test/unit/file_system_unit_test.rb +3 -3
  80. data/test/unit/i18n_unit_test.rb +2 -2
  81. data/test/unit/lexer_unit_test.rb +11 -8
  82. data/test/unit/parser_unit_test.rb +2 -2
  83. data/test/unit/regexp_unit_test.rb +1 -1
  84. data/test/unit/strainer_unit_test.rb +13 -2
  85. data/test/unit/tag_unit_test.rb +7 -2
  86. data/test/unit/tags/case_tag_unit_test.rb +1 -1
  87. data/test/unit/tags/for_tag_unit_test.rb +2 -2
  88. data/test/unit/tags/if_tag_unit_test.rb +1 -1
  89. data/test/unit/template_unit_test.rb +6 -5
  90. data/test/unit/tokenizer_unit_test.rb +24 -7
  91. data/test/unit/variable_unit_test.rb +60 -43
  92. metadata +44 -41
  93. data/lib/liquid/module_ex.rb +0 -62
  94. data/lib/liquid/token.rb +0 -18
  95. data/test/unit/module_ex_unit_test.rb +0 -87
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: liquid
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.6
4
+ version: 4.0.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
- - Tobias Luetke
7
+ - Tobias Lütke
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-24 00:00:00.000000000 Z
11
+ date: 2016-01-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -48,7 +48,7 @@ extra_rdoc_files:
48
48
  - README.md
49
49
  files:
50
50
  - History.md
51
- - MIT-LICENSE
51
+ - LICENSE
52
52
  - README.md
53
53
  - lib/liquid.rb
54
54
  - lib/liquid/block.rb
@@ -61,18 +61,21 @@ files:
61
61
  - lib/liquid/expression.rb
62
62
  - lib/liquid/extensions.rb
63
63
  - lib/liquid/file_system.rb
64
+ - lib/liquid/forloop_drop.rb
64
65
  - lib/liquid/i18n.rb
65
66
  - lib/liquid/interrupts.rb
66
67
  - lib/liquid/lexer.rb
67
68
  - lib/liquid/locales/en.yml
68
- - lib/liquid/module_ex.rb
69
+ - lib/liquid/parse_context.rb
69
70
  - lib/liquid/parser.rb
70
71
  - lib/liquid/parser_switching.rb
71
72
  - lib/liquid/profiler.rb
72
73
  - lib/liquid/profiler/hooks.rb
73
74
  - lib/liquid/range_lookup.rb
75
+ - lib/liquid/resource_limits.rb
74
76
  - lib/liquid/standardfilters.rb
75
77
  - lib/liquid/strainer.rb
78
+ - lib/liquid/tablerowloop_drop.rb
76
79
  - lib/liquid/tag.rb
77
80
  - lib/liquid/tags/assign.rb
78
81
  - lib/liquid/tags/break.rb
@@ -91,7 +94,7 @@ files:
91
94
  - lib/liquid/tags/table_row.rb
92
95
  - lib/liquid/tags/unless.rb
93
96
  - lib/liquid/template.rb
94
- - lib/liquid/token.rb
97
+ - lib/liquid/tokenizer.rb
95
98
  - lib/liquid/utils.rb
96
99
  - lib/liquid/variable.rb
97
100
  - lib/liquid/variable_lookup.rb
@@ -101,6 +104,7 @@ files:
101
104
  - test/integration/blank_test.rb
102
105
  - test/integration/capture_test.rb
103
106
  - test/integration/context_test.rb
107
+ - test/integration/document_test.rb
104
108
  - test/integration/drop_test.rb
105
109
  - test/integration/error_handling_test.rb
106
110
  - test/integration/filter_test.rb
@@ -130,7 +134,6 @@ files:
130
134
  - test/unit/file_system_unit_test.rb
131
135
  - test/unit/i18n_unit_test.rb
132
136
  - test/unit/lexer_unit_test.rb
133
- - test/unit/module_ex_unit_test.rb
134
137
  - test/unit/parser_unit_test.rb
135
138
  - test/unit/regexp_unit_test.rb
136
139
  - test/unit/strainer_unit_test.rb
@@ -161,53 +164,53 @@ required_rubygems_version: !ruby/object:Gem::Requirement
161
164
  version: 1.3.7
162
165
  requirements: []
163
166
  rubyforge_project:
164
- rubygems_version: 2.2.1
167
+ rubygems_version: 2.2.3
165
168
  signing_key:
166
169
  specification_version: 4
167
170
  summary: A secure, non-evaling end user template engine with aesthetic markup.
168
171
  test_files:
169
172
  - test/fixtures/en_locale.yml
170
- - test/integration/assign_test.rb
171
- - test/integration/blank_test.rb
172
- - test/integration/capture_test.rb
173
- - test/integration/context_test.rb
173
+ - test/test_helper.rb
174
+ - test/unit/tokenizer_unit_test.rb
175
+ - test/unit/regexp_unit_test.rb
176
+ - test/unit/lexer_unit_test.rb
177
+ - test/unit/strainer_unit_test.rb
178
+ - test/unit/i18n_unit_test.rb
179
+ - test/unit/condition_unit_test.rb
180
+ - test/unit/variable_unit_test.rb
181
+ - test/unit/context_unit_test.rb
182
+ - test/unit/block_unit_test.rb
183
+ - test/unit/template_unit_test.rb
184
+ - test/unit/file_system_unit_test.rb
185
+ - test/unit/parser_unit_test.rb
186
+ - test/unit/tag_unit_test.rb
187
+ - test/unit/tags/case_tag_unit_test.rb
188
+ - test/unit/tags/if_tag_unit_test.rb
189
+ - test/unit/tags/for_tag_unit_test.rb
174
190
  - test/integration/drop_test.rb
175
- - test/integration/error_handling_test.rb
176
- - test/integration/filter_test.rb
177
191
  - test/integration/hash_ordering_test.rb
192
+ - test/integration/variable_test.rb
193
+ - test/integration/assign_test.rb
178
194
  - test/integration/output_test.rb
179
- - test/integration/parsing_quirks_test.rb
180
- - test/integration/render_profiling_test.rb
195
+ - test/integration/error_handling_test.rb
181
196
  - test/integration/security_test.rb
197
+ - test/integration/template_test.rb
198
+ - test/integration/document_test.rb
199
+ - test/integration/capture_test.rb
200
+ - test/integration/render_profiling_test.rb
201
+ - test/integration/parsing_quirks_test.rb
202
+ - test/integration/blank_test.rb
203
+ - test/integration/filter_test.rb
204
+ - test/integration/context_test.rb
182
205
  - test/integration/standard_filter_test.rb
206
+ - test/integration/tags/statements_test.rb
207
+ - test/integration/tags/increment_tag_test.rb
208
+ - test/integration/tags/standard_tag_test.rb
183
209
  - test/integration/tags/break_tag_test.rb
184
210
  - test/integration/tags/continue_tag_test.rb
185
211
  - test/integration/tags/for_tag_test.rb
186
- - test/integration/tags/if_else_tag_test.rb
187
- - test/integration/tags/include_tag_test.rb
188
- - test/integration/tags/increment_tag_test.rb
189
212
  - test/integration/tags/raw_tag_test.rb
190
- - test/integration/tags/standard_tag_test.rb
191
- - test/integration/tags/statements_test.rb
213
+ - test/integration/tags/include_tag_test.rb
192
214
  - test/integration/tags/table_row_test.rb
193
215
  - test/integration/tags/unless_else_tag_test.rb
194
- - test/integration/template_test.rb
195
- - test/integration/variable_test.rb
196
- - test/test_helper.rb
197
- - test/unit/block_unit_test.rb
198
- - test/unit/condition_unit_test.rb
199
- - test/unit/context_unit_test.rb
200
- - test/unit/file_system_unit_test.rb
201
- - test/unit/i18n_unit_test.rb
202
- - test/unit/lexer_unit_test.rb
203
- - test/unit/module_ex_unit_test.rb
204
- - test/unit/parser_unit_test.rb
205
- - test/unit/regexp_unit_test.rb
206
- - test/unit/strainer_unit_test.rb
207
- - test/unit/tag_unit_test.rb
208
- - test/unit/tags/case_tag_unit_test.rb
209
- - test/unit/tags/for_tag_unit_test.rb
210
- - test/unit/tags/if_tag_unit_test.rb
211
- - test/unit/template_unit_test.rb
212
- - test/unit/tokenizer_unit_test.rb
213
- - test/unit/variable_unit_test.rb
216
+ - test/integration/tags/if_else_tag_test.rb
@@ -1,62 +0,0 @@
1
- # Copyright 2007 by Domizio Demichelis
2
- # This library is free software. It may be used, redistributed and/or modified
3
- # under the same terms as Ruby itself
4
- #
5
- # This extension is used in order to expose the object of the implementing class
6
- # to liquid as it were a Drop. It also limits the liquid-callable methods of the instance
7
- # to the allowed method passed with the liquid_methods call
8
- # Example:
9
- #
10
- # class SomeClass
11
- # liquid_methods :an_allowed_method
12
- #
13
- # def an_allowed_method
14
- # 'this comes from an allowed method'
15
- # end
16
- # def unallowed_method
17
- # 'this will never be an output'
18
- # end
19
- # end
20
- #
21
- # if you want to extend the drop to other methods you can defines more methods
22
- # in the class <YourClass>::LiquidDropClass
23
- #
24
- # class SomeClass::LiquidDropClass
25
- # def another_allowed_method
26
- # 'and this from another allowed method'
27
- # end
28
- # end
29
- # end
30
- #
31
- # usage:
32
- # @something = SomeClass.new
33
- #
34
- # template:
35
- # {{something.an_allowed_method}}{{something.unallowed_method}} {{something.another_allowed_method}}
36
- #
37
- # output:
38
- # 'this comes from an allowed method and this from another allowed method'
39
- #
40
- # You can also chain associations, by adding the liquid_method call in the
41
- # association models.
42
- #
43
- class Module
44
-
45
- def liquid_methods(*allowed_methods)
46
- drop_class = eval "class #{self.to_s}::LiquidDropClass < Liquid::Drop; self; end"
47
- define_method :to_liquid do
48
- drop_class.new(self)
49
- end
50
- drop_class.class_eval do
51
- def initialize(object)
52
- @object = object
53
- end
54
- allowed_methods.each do |sym|
55
- define_method sym do
56
- @object.send sym
57
- end
58
- end
59
- end
60
- end
61
-
62
- end
@@ -1,18 +0,0 @@
1
- module Liquid
2
- class Token < String
3
- attr_reader :line_number
4
-
5
- def initialize(content, line_number)
6
- super(content)
7
- @line_number = line_number
8
- end
9
-
10
- def raw
11
- "<raw>"
12
- end
13
-
14
- def child(string)
15
- Token.new(string, @line_number)
16
- end
17
- end
18
- end
@@ -1,87 +0,0 @@
1
- require 'test_helper'
2
-
3
- class TestClassA
4
- liquid_methods :allowedA, :chainedB
5
- def allowedA
6
- 'allowedA'
7
- end
8
- def restrictedA
9
- 'restrictedA'
10
- end
11
- def chainedB
12
- TestClassB.new
13
- end
14
- end
15
-
16
- class TestClassB
17
- liquid_methods :allowedB, :chainedC
18
- def allowedB
19
- 'allowedB'
20
- end
21
- def chainedC
22
- TestClassC.new
23
- end
24
- end
25
-
26
- class TestClassC
27
- liquid_methods :allowedC
28
- def allowedC
29
- 'allowedC'
30
- end
31
- end
32
-
33
- class TestClassC::LiquidDropClass
34
- def another_allowedC
35
- 'another_allowedC'
36
- end
37
- end
38
-
39
- class ModuleExUnitTest < Minitest::Test
40
- include Liquid
41
-
42
- def setup
43
- @a = TestClassA.new
44
- @b = TestClassB.new
45
- @c = TestClassC.new
46
- end
47
-
48
- def test_should_create_LiquidDropClass
49
- assert TestClassA::LiquidDropClass
50
- assert TestClassB::LiquidDropClass
51
- assert TestClassC::LiquidDropClass
52
- end
53
-
54
- def test_should_respond_to_liquid
55
- assert @a.respond_to?(:to_liquid)
56
- assert @b.respond_to?(:to_liquid)
57
- assert @c.respond_to?(:to_liquid)
58
- end
59
-
60
- def test_should_return_LiquidDropClass_object
61
- assert @a.to_liquid.is_a?(TestClassA::LiquidDropClass)
62
- assert @b.to_liquid.is_a?(TestClassB::LiquidDropClass)
63
- assert @c.to_liquid.is_a?(TestClassC::LiquidDropClass)
64
- end
65
-
66
- def test_should_respond_to_liquid_methods
67
- assert @a.to_liquid.respond_to?(:allowedA)
68
- assert @a.to_liquid.respond_to?(:chainedB)
69
- assert @b.to_liquid.respond_to?(:allowedB)
70
- assert @b.to_liquid.respond_to?(:chainedC)
71
- assert @c.to_liquid.respond_to?(:allowedC)
72
- assert @c.to_liquid.respond_to?(:another_allowedC)
73
- end
74
-
75
- def test_should_not_respond_to_restricted_methods
76
- assert ! @a.to_liquid.respond_to?(:restricted)
77
- end
78
-
79
- def test_should_use_regular_objects_as_drops
80
- assert_template_result 'allowedA', "{{ a.allowedA }}", 'a'=>@a
81
- assert_template_result 'allowedB', "{{ a.chainedB.allowedB }}", 'a'=>@a
82
- assert_template_result 'allowedC', "{{ a.chainedB.chainedC.allowedC }}", 'a'=>@a
83
- assert_template_result 'another_allowedC', "{{ a.chainedB.chainedC.another_allowedC }}", 'a'=>@a
84
- assert_template_result '', "{{ a.restricted }}", 'a'=>@a
85
- assert_template_result '', "{{ a.unknown }}", 'a'=>@a
86
- end
87
- end # ModuleExTest