liquid 2.6.1 → 4.0.3

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.
Files changed (130) hide show
  1. checksums.yaml +5 -5
  2. data/History.md +194 -29
  3. data/{MIT-LICENSE → LICENSE} +0 -0
  4. data/README.md +60 -2
  5. data/lib/liquid.rb +25 -14
  6. data/lib/liquid/block.rb +47 -96
  7. data/lib/liquid/block_body.rb +143 -0
  8. data/lib/liquid/condition.rb +70 -39
  9. data/lib/liquid/context.rb +116 -157
  10. data/lib/liquid/document.rb +19 -9
  11. data/lib/liquid/drop.rb +31 -14
  12. data/lib/liquid/errors.rb +54 -10
  13. data/lib/liquid/expression.rb +49 -0
  14. data/lib/liquid/extensions.rb +19 -7
  15. data/lib/liquid/file_system.rb +25 -14
  16. data/lib/liquid/forloop_drop.rb +42 -0
  17. data/lib/liquid/i18n.rb +39 -0
  18. data/lib/liquid/interrupts.rb +2 -3
  19. data/lib/liquid/lexer.rb +55 -0
  20. data/lib/liquid/locales/en.yml +26 -0
  21. data/lib/liquid/parse_context.rb +38 -0
  22. data/lib/liquid/parse_tree_visitor.rb +42 -0
  23. data/lib/liquid/parser.rb +90 -0
  24. data/lib/liquid/parser_switching.rb +31 -0
  25. data/lib/liquid/profiler.rb +158 -0
  26. data/lib/liquid/profiler/hooks.rb +23 -0
  27. data/lib/liquid/range_lookup.rb +37 -0
  28. data/lib/liquid/resource_limits.rb +23 -0
  29. data/lib/liquid/standardfilters.rb +311 -77
  30. data/lib/liquid/strainer.rb +39 -26
  31. data/lib/liquid/tablerowloop_drop.rb +62 -0
  32. data/lib/liquid/tag.rb +28 -11
  33. data/lib/liquid/tags/assign.rb +34 -10
  34. data/lib/liquid/tags/break.rb +1 -4
  35. data/lib/liquid/tags/capture.rb +11 -9
  36. data/lib/liquid/tags/case.rb +37 -22
  37. data/lib/liquid/tags/comment.rb +10 -3
  38. data/lib/liquid/tags/continue.rb +1 -4
  39. data/lib/liquid/tags/cycle.rb +20 -14
  40. data/lib/liquid/tags/decrement.rb +4 -8
  41. data/lib/liquid/tags/for.rb +121 -60
  42. data/lib/liquid/tags/if.rb +73 -30
  43. data/lib/liquid/tags/ifchanged.rb +3 -5
  44. data/lib/liquid/tags/include.rb +77 -46
  45. data/lib/liquid/tags/increment.rb +4 -8
  46. data/lib/liquid/tags/raw.rb +35 -10
  47. data/lib/liquid/tags/table_row.rb +62 -0
  48. data/lib/liquid/tags/unless.rb +6 -9
  49. data/lib/liquid/template.rb +130 -32
  50. data/lib/liquid/tokenizer.rb +31 -0
  51. data/lib/liquid/truffle.rb +5 -0
  52. data/lib/liquid/utils.rb +57 -4
  53. data/lib/liquid/variable.rb +121 -30
  54. data/lib/liquid/variable_lookup.rb +88 -0
  55. data/lib/liquid/version.rb +2 -1
  56. data/test/fixtures/en_locale.yml +9 -0
  57. data/test/integration/assign_test.rb +48 -0
  58. data/test/integration/blank_test.rb +106 -0
  59. data/test/integration/block_test.rb +12 -0
  60. data/test/{liquid → integration}/capture_test.rb +13 -3
  61. data/test/integration/context_test.rb +32 -0
  62. data/test/integration/document_test.rb +19 -0
  63. data/test/integration/drop_test.rb +273 -0
  64. data/test/integration/error_handling_test.rb +260 -0
  65. data/test/integration/filter_test.rb +178 -0
  66. data/test/integration/hash_ordering_test.rb +23 -0
  67. data/test/integration/output_test.rb +123 -0
  68. data/test/integration/parse_tree_visitor_test.rb +247 -0
  69. data/test/integration/parsing_quirks_test.rb +122 -0
  70. data/test/integration/render_profiling_test.rb +154 -0
  71. data/test/integration/security_test.rb +80 -0
  72. data/test/integration/standard_filter_test.rb +776 -0
  73. data/test/{liquid → integration}/tags/break_tag_test.rb +2 -3
  74. data/test/{liquid → integration}/tags/continue_tag_test.rb +1 -2
  75. data/test/integration/tags/for_tag_test.rb +410 -0
  76. data/test/integration/tags/if_else_tag_test.rb +188 -0
  77. data/test/integration/tags/include_tag_test.rb +253 -0
  78. data/test/integration/tags/increment_tag_test.rb +23 -0
  79. data/test/{liquid → integration}/tags/raw_tag_test.rb +9 -2
  80. data/test/integration/tags/standard_tag_test.rb +296 -0
  81. data/test/integration/tags/statements_test.rb +111 -0
  82. data/test/{liquid/tags/html_tag_test.rb → integration/tags/table_row_test.rb} +25 -24
  83. data/test/integration/tags/unless_else_tag_test.rb +26 -0
  84. data/test/integration/template_test.rb +332 -0
  85. data/test/integration/trim_mode_test.rb +529 -0
  86. data/test/integration/variable_test.rb +96 -0
  87. data/test/test_helper.rb +106 -19
  88. data/test/truffle/truffle_test.rb +9 -0
  89. data/test/{liquid/block_test.rb → unit/block_unit_test.rb} +9 -9
  90. data/test/unit/condition_unit_test.rb +166 -0
  91. data/test/{liquid/context_test.rb → unit/context_unit_test.rb} +85 -74
  92. data/test/unit/file_system_unit_test.rb +35 -0
  93. data/test/unit/i18n_unit_test.rb +37 -0
  94. data/test/unit/lexer_unit_test.rb +51 -0
  95. data/test/unit/parser_unit_test.rb +82 -0
  96. data/test/{liquid/regexp_test.rb → unit/regexp_unit_test.rb} +4 -4
  97. data/test/unit/strainer_unit_test.rb +164 -0
  98. data/test/unit/tag_unit_test.rb +21 -0
  99. data/test/unit/tags/case_tag_unit_test.rb +10 -0
  100. data/test/unit/tags/for_tag_unit_test.rb +13 -0
  101. data/test/unit/tags/if_tag_unit_test.rb +8 -0
  102. data/test/unit/template_unit_test.rb +78 -0
  103. data/test/unit/tokenizer_unit_test.rb +55 -0
  104. data/test/unit/variable_unit_test.rb +162 -0
  105. metadata +157 -77
  106. data/lib/extras/liquid_view.rb +0 -51
  107. data/lib/liquid/htmltags.rb +0 -74
  108. data/lib/liquid/module_ex.rb +0 -62
  109. data/test/liquid/assign_test.rb +0 -21
  110. data/test/liquid/condition_test.rb +0 -127
  111. data/test/liquid/drop_test.rb +0 -180
  112. data/test/liquid/error_handling_test.rb +0 -81
  113. data/test/liquid/file_system_test.rb +0 -29
  114. data/test/liquid/filter_test.rb +0 -125
  115. data/test/liquid/hash_ordering_test.rb +0 -25
  116. data/test/liquid/module_ex_test.rb +0 -87
  117. data/test/liquid/output_test.rb +0 -116
  118. data/test/liquid/parsing_quirks_test.rb +0 -52
  119. data/test/liquid/security_test.rb +0 -64
  120. data/test/liquid/standard_filter_test.rb +0 -251
  121. data/test/liquid/strainer_test.rb +0 -52
  122. data/test/liquid/tags/for_tag_test.rb +0 -297
  123. data/test/liquid/tags/if_else_tag_test.rb +0 -166
  124. data/test/liquid/tags/include_tag_test.rb +0 -166
  125. data/test/liquid/tags/increment_tag_test.rb +0 -24
  126. data/test/liquid/tags/standard_tag_test.rb +0 -295
  127. data/test/liquid/tags/statements_test.rb +0 -134
  128. data/test/liquid/tags/unless_else_tag_test.rb +0 -26
  129. data/test/liquid/template_test.rb +0 -146
  130. data/test/liquid/variable_test.rb +0 -186
@@ -0,0 +1,8 @@
1
+ require 'test_helper'
2
+
3
+ class IfTagUnitTest < Minitest::Test
4
+ def test_if_nodelist
5
+ template = Liquid::Template.parse('{% if true %}IF{% else %}ELSE{% endif %}')
6
+ assert_equal ['IF', 'ELSE'], template.root.nodelist[0].nodelist.map(&:nodelist).flatten
7
+ end
8
+ end
@@ -0,0 +1,78 @@
1
+ require 'test_helper'
2
+
3
+ class TemplateUnitTest < Minitest::Test
4
+ include Liquid
5
+
6
+ def test_sets_default_localization_in_document
7
+ t = Template.new
8
+ t.parse('{%comment%}{%endcomment%}')
9
+ assert_instance_of I18n, t.root.nodelist[0].options[:locale]
10
+ end
11
+
12
+ def test_sets_default_localization_in_context_with_quick_initialization
13
+ t = Template.new
14
+ t.parse('{%comment%}{%endcomment%}', locale: I18n.new(fixture("en_locale.yml")))
15
+
16
+ locale = t.root.nodelist[0].options[:locale]
17
+ assert_instance_of I18n, locale
18
+ assert_equal fixture("en_locale.yml"), locale.path
19
+ end
20
+
21
+ def test_with_cache_classes_tags_returns_the_same_class
22
+ original_cache_setting = Liquid.cache_classes
23
+ Liquid.cache_classes = true
24
+
25
+ original_klass = Class.new
26
+ Object.send(:const_set, :CustomTag, original_klass)
27
+ Template.register_tag('custom', CustomTag)
28
+
29
+ Object.send(:remove_const, :CustomTag)
30
+
31
+ new_klass = Class.new
32
+ Object.send(:const_set, :CustomTag, new_klass)
33
+
34
+ assert Template.tags['custom'].equal?(original_klass)
35
+ ensure
36
+ Object.send(:remove_const, :CustomTag)
37
+ Template.tags.delete('custom')
38
+ Liquid.cache_classes = original_cache_setting
39
+ end
40
+
41
+ def test_without_cache_classes_tags_reloads_the_class
42
+ original_cache_setting = Liquid.cache_classes
43
+ Liquid.cache_classes = false
44
+
45
+ original_klass = Class.new
46
+ Object.send(:const_set, :CustomTag, original_klass)
47
+ Template.register_tag('custom', CustomTag)
48
+
49
+ Object.send(:remove_const, :CustomTag)
50
+
51
+ new_klass = Class.new
52
+ Object.send(:const_set, :CustomTag, new_klass)
53
+
54
+ assert Template.tags['custom'].equal?(new_klass)
55
+ ensure
56
+ Object.send(:remove_const, :CustomTag)
57
+ Template.tags.delete('custom')
58
+ Liquid.cache_classes = original_cache_setting
59
+ end
60
+
61
+ class FakeTag; end
62
+
63
+ def test_tags_delete
64
+ Template.register_tag('fake', FakeTag)
65
+ assert_equal FakeTag, Template.tags['fake']
66
+
67
+ Template.tags.delete('fake')
68
+ assert_nil Template.tags['fake']
69
+ end
70
+
71
+ def test_tags_can_be_looped_over
72
+ Template.register_tag('fake', FakeTag)
73
+ result = Template.tags.map { |name, klass| [name, klass] }
74
+ assert result.include?(["fake", "TemplateUnitTest::FakeTag"])
75
+ ensure
76
+ Template.tags.delete('fake')
77
+ end
78
+ end
@@ -0,0 +1,55 @@
1
+ require 'test_helper'
2
+
3
+ class TokenizerTest < Minitest::Test
4
+ def test_tokenize_strings
5
+ assert_equal [' '], tokenize(' ')
6
+ assert_equal ['hello world'], tokenize('hello world')
7
+ end
8
+
9
+ def test_tokenize_variables
10
+ assert_equal ['{{funk}}'], tokenize('{{funk}}')
11
+ assert_equal [' ', '{{funk}}', ' '], tokenize(' {{funk}} ')
12
+ assert_equal [' ', '{{funk}}', ' ', '{{so}}', ' ', '{{brother}}', ' '], tokenize(' {{funk}} {{so}} {{brother}} ')
13
+ assert_equal [' ', '{{ funk }}', ' '], tokenize(' {{ funk }} ')
14
+ end
15
+
16
+ def test_tokenize_blocks
17
+ assert_equal ['{%comment%}'], tokenize('{%comment%}')
18
+ assert_equal [' ', '{%comment%}', ' '], tokenize(' {%comment%} ')
19
+
20
+ assert_equal [' ', '{%comment%}', ' ', '{%endcomment%}', ' '], tokenize(' {%comment%} {%endcomment%} ')
21
+ assert_equal [' ', '{% comment %}', ' ', '{% endcomment %}', ' '], tokenize(" {% comment %} {% endcomment %} ")
22
+ end
23
+
24
+ def test_calculate_line_numbers_per_token_with_profiling
25
+ assert_equal [1], tokenize_line_numbers("{{funk}}")
26
+ assert_equal [1, 1, 1], tokenize_line_numbers(" {{funk}} ")
27
+ assert_equal [1, 2, 2], tokenize_line_numbers("\n{{funk}}\n")
28
+ assert_equal [1, 1, 3], tokenize_line_numbers(" {{\n funk \n}} ")
29
+ end
30
+
31
+ private
32
+
33
+ def tokenize(source)
34
+ tokenizer = Liquid::Tokenizer.new(source)
35
+ tokens = []
36
+ while t = tokenizer.shift
37
+ tokens << t
38
+ end
39
+ tokens
40
+ end
41
+
42
+ def tokenize_line_numbers(source)
43
+ tokenizer = Liquid::Tokenizer.new(source, true)
44
+ line_numbers = []
45
+ loop do
46
+ line_number = tokenizer.line_number
47
+ if tokenizer.shift
48
+ line_numbers << line_number
49
+ else
50
+ break
51
+ end
52
+ end
53
+ line_numbers
54
+ end
55
+ end
@@ -0,0 +1,162 @@
1
+ require 'test_helper'
2
+
3
+ class VariableUnitTest < Minitest::Test
4
+ include Liquid
5
+
6
+ def test_variable
7
+ var = create_variable('hello')
8
+ assert_equal VariableLookup.new('hello'), var.name
9
+ end
10
+
11
+ def test_filters
12
+ var = create_variable('hello | textileze')
13
+ assert_equal VariableLookup.new('hello'), var.name
14
+ assert_equal [['textileze', []]], var.filters
15
+
16
+ var = create_variable('hello | textileze | paragraph')
17
+ assert_equal VariableLookup.new('hello'), var.name
18
+ assert_equal [['textileze', []], ['paragraph', []]], var.filters
19
+
20
+ var = create_variable(%( hello | strftime: '%Y'))
21
+ assert_equal VariableLookup.new('hello'), var.name
22
+ assert_equal [['strftime', ['%Y']]], var.filters
23
+
24
+ var = create_variable(%( 'typo' | link_to: 'Typo', true ))
25
+ assert_equal 'typo', var.name
26
+ assert_equal [['link_to', ['Typo', true]]], var.filters
27
+
28
+ var = create_variable(%( 'typo' | link_to: 'Typo', false ))
29
+ assert_equal 'typo', var.name
30
+ assert_equal [['link_to', ['Typo', false]]], var.filters
31
+
32
+ var = create_variable(%( 'foo' | repeat: 3 ))
33
+ assert_equal 'foo', var.name
34
+ assert_equal [['repeat', [3]]], var.filters
35
+
36
+ var = create_variable(%( 'foo' | repeat: 3, 3 ))
37
+ assert_equal 'foo', var.name
38
+ assert_equal [['repeat', [3, 3]]], var.filters
39
+
40
+ var = create_variable(%( 'foo' | repeat: 3, 3, 3 ))
41
+ assert_equal 'foo', var.name
42
+ assert_equal [['repeat', [3, 3, 3]]], var.filters
43
+
44
+ var = create_variable(%( hello | strftime: '%Y, okay?'))
45
+ assert_equal VariableLookup.new('hello'), var.name
46
+ assert_equal [['strftime', ['%Y, okay?']]], var.filters
47
+
48
+ var = create_variable(%( hello | things: "%Y, okay?", 'the other one'))
49
+ assert_equal VariableLookup.new('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
+ var = create_variable(%( '2006-06-06' | date: "%m/%d/%Y"))
55
+ assert_equal '2006-06-06', var.name
56
+ assert_equal [['date', ['%m/%d/%Y']]], var.filters
57
+ end
58
+
59
+ def test_filters_without_whitespace
60
+ var = create_variable('hello | textileze | paragraph')
61
+ assert_equal VariableLookup.new('hello'), var.name
62
+ assert_equal [['textileze', []], ['paragraph', []]], var.filters
63
+
64
+ var = create_variable('hello|textileze|paragraph')
65
+ assert_equal VariableLookup.new('hello'), var.name
66
+ assert_equal [['textileze', []], ['paragraph', []]], var.filters
67
+
68
+ var = create_variable("hello|replace:'foo','bar'|textileze")
69
+ assert_equal VariableLookup.new('hello'), var.name
70
+ assert_equal [['replace', ['foo', 'bar']], ['textileze', []]], var.filters
71
+ end
72
+
73
+ def test_symbol
74
+ var = create_variable("http://disney.com/logo.gif | image: 'med' ", error_mode: :lax)
75
+ assert_equal VariableLookup.new('http://disney.com/logo.gif'), var.name
76
+ assert_equal [['image', ['med']]], var.filters
77
+ end
78
+
79
+ def test_string_to_filter
80
+ var = create_variable("'http://disney.com/logo.gif' | image: 'med' ")
81
+ assert_equal 'http://disney.com/logo.gif', var.name
82
+ assert_equal [['image', ['med']]], var.filters
83
+ end
84
+
85
+ def test_string_single_quoted
86
+ var = create_variable(%( "hello" ))
87
+ assert_equal 'hello', var.name
88
+ end
89
+
90
+ def test_string_double_quoted
91
+ var = create_variable(%( 'hello' ))
92
+ assert_equal 'hello', var.name
93
+ end
94
+
95
+ def test_integer
96
+ var = create_variable(%( 1000 ))
97
+ assert_equal 1000, var.name
98
+ end
99
+
100
+ def test_float
101
+ var = create_variable(%( 1000.01 ))
102
+ assert_equal 1000.01, var.name
103
+ end
104
+
105
+ def test_dashes
106
+ assert_equal VariableLookup.new('foo-bar'), create_variable('foo-bar').name
107
+ assert_equal VariableLookup.new('foo-bar-2'), create_variable('foo-bar-2').name
108
+
109
+ with_error_mode :strict do
110
+ assert_raises(Liquid::SyntaxError) { create_variable('foo - bar') }
111
+ assert_raises(Liquid::SyntaxError) { create_variable('-foo') }
112
+ assert_raises(Liquid::SyntaxError) { create_variable('2foo') }
113
+ end
114
+ end
115
+
116
+ def test_string_with_special_chars
117
+ var = create_variable(%( 'hello! $!@.;"ddasd" ' ))
118
+ assert_equal 'hello! $!@.;"ddasd" ', var.name
119
+ end
120
+
121
+ def test_string_dot
122
+ var = create_variable(%( test.test ))
123
+ assert_equal VariableLookup.new('test.test'), var.name
124
+ end
125
+
126
+ def test_filter_with_keyword_arguments
127
+ var = create_variable(%( hello | things: greeting: "world", farewell: 'goodbye'))
128
+ assert_equal VariableLookup.new('hello'), var.name
129
+ assert_equal [['things', [], { 'greeting' => 'world', 'farewell' => 'goodbye' }]], var.filters
130
+ end
131
+
132
+ def test_lax_filter_argument_parsing
133
+ var = create_variable(%( number_of_comments | pluralize: 'comment': 'comments' ), error_mode: :lax)
134
+ assert_equal VariableLookup.new('number_of_comments'), var.name
135
+ assert_equal [['pluralize', ['comment', 'comments']]], var.filters
136
+ end
137
+
138
+ def test_strict_filter_argument_parsing
139
+ with_error_mode(:strict) do
140
+ assert_raises(SyntaxError) do
141
+ create_variable(%( number_of_comments | pluralize: 'comment': 'comments' ))
142
+ end
143
+ end
144
+ end
145
+
146
+ def test_output_raw_source_of_variable
147
+ var = create_variable(%( name_of_variable | upcase ))
148
+ assert_equal " name_of_variable | upcase ", var.raw
149
+ end
150
+
151
+ def test_variable_lookup_interface
152
+ lookup = VariableLookup.new('a.b.c')
153
+ assert_equal 'a', lookup.name
154
+ assert_equal ['b', 'c'], lookup.lookups
155
+ end
156
+
157
+ private
158
+
159
+ def create_variable(markup, options = {})
160
+ Variable.new(markup, ParseContext.new(options))
161
+ end
162
+ end
metadata CHANGED
@@ -1,15 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: liquid
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.6.1
4
+ version: 4.0.3
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: 2014-01-10 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2019-03-12 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '11.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '11.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: minitest
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
13
41
  description:
14
42
  email:
15
43
  - tobi@leetsoft.com
@@ -19,20 +47,36 @@ extra_rdoc_files:
19
47
  - History.md
20
48
  - README.md
21
49
  files:
22
- - lib/extras/liquid_view.rb
50
+ - History.md
51
+ - LICENSE
52
+ - README.md
53
+ - lib/liquid.rb
23
54
  - lib/liquid/block.rb
55
+ - lib/liquid/block_body.rb
24
56
  - lib/liquid/condition.rb
25
57
  - lib/liquid/context.rb
26
58
  - lib/liquid/document.rb
27
59
  - lib/liquid/drop.rb
28
60
  - lib/liquid/errors.rb
61
+ - lib/liquid/expression.rb
29
62
  - lib/liquid/extensions.rb
30
63
  - lib/liquid/file_system.rb
31
- - lib/liquid/htmltags.rb
64
+ - lib/liquid/forloop_drop.rb
65
+ - lib/liquid/i18n.rb
32
66
  - lib/liquid/interrupts.rb
33
- - lib/liquid/module_ex.rb
67
+ - lib/liquid/lexer.rb
68
+ - lib/liquid/locales/en.yml
69
+ - lib/liquid/parse_context.rb
70
+ - lib/liquid/parse_tree_visitor.rb
71
+ - lib/liquid/parser.rb
72
+ - lib/liquid/parser_switching.rb
73
+ - lib/liquid/profiler.rb
74
+ - lib/liquid/profiler/hooks.rb
75
+ - lib/liquid/range_lookup.rb
76
+ - lib/liquid/resource_limits.rb
34
77
  - lib/liquid/standardfilters.rb
35
78
  - lib/liquid/strainer.rb
79
+ - lib/liquid/tablerowloop_drop.rb
36
80
  - lib/liquid/tag.rb
37
81
  - lib/liquid/tags/assign.rb
38
82
  - lib/liquid/tags/break.rb
@@ -48,48 +92,67 @@ files:
48
92
  - lib/liquid/tags/include.rb
49
93
  - lib/liquid/tags/increment.rb
50
94
  - lib/liquid/tags/raw.rb
95
+ - lib/liquid/tags/table_row.rb
51
96
  - lib/liquid/tags/unless.rb
52
97
  - lib/liquid/template.rb
98
+ - lib/liquid/tokenizer.rb
99
+ - lib/liquid/truffle.rb
53
100
  - lib/liquid/utils.rb
54
101
  - lib/liquid/variable.rb
102
+ - lib/liquid/variable_lookup.rb
55
103
  - lib/liquid/version.rb
56
- - lib/liquid.rb
57
- - MIT-LICENSE
58
- - README.md
59
- - History.md
60
- - test/liquid/assign_test.rb
61
- - test/liquid/block_test.rb
62
- - test/liquid/capture_test.rb
63
- - test/liquid/condition_test.rb
64
- - test/liquid/context_test.rb
65
- - test/liquid/drop_test.rb
66
- - test/liquid/error_handling_test.rb
67
- - test/liquid/file_system_test.rb
68
- - test/liquid/filter_test.rb
69
- - test/liquid/hash_ordering_test.rb
70
- - test/liquid/module_ex_test.rb
71
- - test/liquid/output_test.rb
72
- - test/liquid/parsing_quirks_test.rb
73
- - test/liquid/regexp_test.rb
74
- - test/liquid/security_test.rb
75
- - test/liquid/standard_filter_test.rb
76
- - test/liquid/strainer_test.rb
77
- - test/liquid/tags/break_tag_test.rb
78
- - test/liquid/tags/continue_tag_test.rb
79
- - test/liquid/tags/for_tag_test.rb
80
- - test/liquid/tags/html_tag_test.rb
81
- - test/liquid/tags/if_else_tag_test.rb
82
- - test/liquid/tags/include_tag_test.rb
83
- - test/liquid/tags/increment_tag_test.rb
84
- - test/liquid/tags/raw_tag_test.rb
85
- - test/liquid/tags/standard_tag_test.rb
86
- - test/liquid/tags/statements_test.rb
87
- - test/liquid/tags/unless_else_tag_test.rb
88
- - test/liquid/template_test.rb
89
- - test/liquid/variable_test.rb
104
+ - test/fixtures/en_locale.yml
105
+ - test/integration/assign_test.rb
106
+ - test/integration/blank_test.rb
107
+ - test/integration/block_test.rb
108
+ - test/integration/capture_test.rb
109
+ - test/integration/context_test.rb
110
+ - test/integration/document_test.rb
111
+ - test/integration/drop_test.rb
112
+ - test/integration/error_handling_test.rb
113
+ - test/integration/filter_test.rb
114
+ - test/integration/hash_ordering_test.rb
115
+ - test/integration/output_test.rb
116
+ - test/integration/parse_tree_visitor_test.rb
117
+ - test/integration/parsing_quirks_test.rb
118
+ - test/integration/render_profiling_test.rb
119
+ - test/integration/security_test.rb
120
+ - test/integration/standard_filter_test.rb
121
+ - test/integration/tags/break_tag_test.rb
122
+ - test/integration/tags/continue_tag_test.rb
123
+ - test/integration/tags/for_tag_test.rb
124
+ - test/integration/tags/if_else_tag_test.rb
125
+ - test/integration/tags/include_tag_test.rb
126
+ - test/integration/tags/increment_tag_test.rb
127
+ - test/integration/tags/raw_tag_test.rb
128
+ - test/integration/tags/standard_tag_test.rb
129
+ - test/integration/tags/statements_test.rb
130
+ - test/integration/tags/table_row_test.rb
131
+ - test/integration/tags/unless_else_tag_test.rb
132
+ - test/integration/template_test.rb
133
+ - test/integration/trim_mode_test.rb
134
+ - test/integration/variable_test.rb
90
135
  - test/test_helper.rb
136
+ - test/truffle/truffle_test.rb
137
+ - test/unit/block_unit_test.rb
138
+ - test/unit/condition_unit_test.rb
139
+ - test/unit/context_unit_test.rb
140
+ - test/unit/file_system_unit_test.rb
141
+ - test/unit/i18n_unit_test.rb
142
+ - test/unit/lexer_unit_test.rb
143
+ - test/unit/parser_unit_test.rb
144
+ - test/unit/regexp_unit_test.rb
145
+ - test/unit/strainer_unit_test.rb
146
+ - test/unit/tag_unit_test.rb
147
+ - test/unit/tags/case_tag_unit_test.rb
148
+ - test/unit/tags/for_tag_unit_test.rb
149
+ - test/unit/tags/if_tag_unit_test.rb
150
+ - test/unit/template_unit_test.rb
151
+ - test/unit/tokenizer_unit_test.rb
152
+ - test/unit/variable_unit_test.rb
91
153
  homepage: http://www.liquidmarkup.org
92
- licenses: []
154
+ licenses:
155
+ - MIT
93
156
  metadata: {}
94
157
  post_install_message:
95
158
  rdoc_options: []
@@ -97,49 +160,66 @@ require_paths:
97
160
  - lib
98
161
  required_ruby_version: !ruby/object:Gem::Requirement
99
162
  requirements:
100
- - - '>='
163
+ - - ">="
101
164
  - !ruby/object:Gem::Version
102
- version: '0'
165
+ version: 2.1.0
103
166
  required_rubygems_version: !ruby/object:Gem::Requirement
104
167
  requirements:
105
- - - '>='
168
+ - - ">="
106
169
  - !ruby/object:Gem::Version
107
170
  version: 1.3.7
108
171
  requirements: []
109
- rubyforge_project:
110
- rubygems_version: 2.0.3
172
+ rubygems_version: 3.0.2
111
173
  signing_key:
112
174
  specification_version: 4
113
175
  summary: A secure, non-evaling end user template engine with aesthetic markup.
114
176
  test_files:
115
- - test/liquid/assign_test.rb
116
- - test/liquid/block_test.rb
117
- - test/liquid/capture_test.rb
118
- - test/liquid/condition_test.rb
119
- - test/liquid/context_test.rb
120
- - test/liquid/drop_test.rb
121
- - test/liquid/error_handling_test.rb
122
- - test/liquid/file_system_test.rb
123
- - test/liquid/filter_test.rb
124
- - test/liquid/hash_ordering_test.rb
125
- - test/liquid/module_ex_test.rb
126
- - test/liquid/output_test.rb
127
- - test/liquid/parsing_quirks_test.rb
128
- - test/liquid/regexp_test.rb
129
- - test/liquid/security_test.rb
130
- - test/liquid/standard_filter_test.rb
131
- - test/liquid/strainer_test.rb
132
- - test/liquid/tags/break_tag_test.rb
133
- - test/liquid/tags/continue_tag_test.rb
134
- - test/liquid/tags/for_tag_test.rb
135
- - test/liquid/tags/html_tag_test.rb
136
- - test/liquid/tags/if_else_tag_test.rb
137
- - test/liquid/tags/include_tag_test.rb
138
- - test/liquid/tags/increment_tag_test.rb
139
- - test/liquid/tags/raw_tag_test.rb
140
- - test/liquid/tags/standard_tag_test.rb
141
- - test/liquid/tags/statements_test.rb
142
- - test/liquid/tags/unless_else_tag_test.rb
143
- - test/liquid/template_test.rb
144
- - test/liquid/variable_test.rb
177
+ - test/unit/lexer_unit_test.rb
178
+ - test/unit/block_unit_test.rb
179
+ - test/unit/variable_unit_test.rb
180
+ - test/unit/parser_unit_test.rb
181
+ - test/unit/tags/if_tag_unit_test.rb
182
+ - test/unit/tags/case_tag_unit_test.rb
183
+ - test/unit/tags/for_tag_unit_test.rb
184
+ - test/unit/context_unit_test.rb
185
+ - test/unit/tokenizer_unit_test.rb
186
+ - test/unit/tag_unit_test.rb
187
+ - test/unit/i18n_unit_test.rb
188
+ - test/unit/template_unit_test.rb
189
+ - test/unit/condition_unit_test.rb
190
+ - test/unit/file_system_unit_test.rb
191
+ - test/unit/regexp_unit_test.rb
192
+ - test/unit/strainer_unit_test.rb
193
+ - test/integration/output_test.rb
194
+ - test/integration/hash_ordering_test.rb
195
+ - test/integration/variable_test.rb
196
+ - test/integration/blank_test.rb
197
+ - test/integration/parse_tree_visitor_test.rb
198
+ - test/integration/assign_test.rb
199
+ - test/integration/trim_mode_test.rb
200
+ - test/integration/context_test.rb
201
+ - test/integration/capture_test.rb
202
+ - test/integration/tags/increment_tag_test.rb
203
+ - test/integration/tags/for_tag_test.rb
204
+ - test/integration/tags/standard_tag_test.rb
205
+ - test/integration/tags/table_row_test.rb
206
+ - test/integration/tags/include_tag_test.rb
207
+ - test/integration/tags/raw_tag_test.rb
208
+ - test/integration/tags/statements_test.rb
209
+ - test/integration/tags/if_else_tag_test.rb
210
+ - test/integration/tags/unless_else_tag_test.rb
211
+ - test/integration/tags/continue_tag_test.rb
212
+ - test/integration/tags/break_tag_test.rb
213
+ - test/integration/block_test.rb
214
+ - test/integration/standard_filter_test.rb
215
+ - test/integration/drop_test.rb
216
+ - test/integration/error_handling_test.rb
217
+ - test/integration/template_test.rb
218
+ - test/integration/document_test.rb
219
+ - test/integration/security_test.rb
220
+ - test/integration/render_profiling_test.rb
221
+ - test/integration/parsing_quirks_test.rb
222
+ - test/integration/filter_test.rb
223
+ - test/truffle/truffle_test.rb
224
+ - test/fixtures/en_locale.yml
145
225
  - test/test_helper.rb