liquid 1.9.0 → 2.0.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.
Files changed (48) hide show
  1. data/Manifest.txt +0 -31
  2. data/Rakefile +1 -1
  3. data/lib/extras/liquid_view.rb +15 -2
  4. data/lib/liquid.rb +15 -15
  5. data/lib/liquid/block.rb +1 -2
  6. data/lib/liquid/context.rb +89 -99
  7. data/lib/liquid/drop.rb +6 -4
  8. data/lib/liquid/errors.rb +1 -0
  9. data/lib/liquid/standardfilters.rb +56 -11
  10. data/lib/liquid/strainer.rb +1 -1
  11. data/lib/liquid/tags/assign.rb +1 -1
  12. data/lib/liquid/tags/case.rb +2 -2
  13. data/lib/liquid/tags/cycle.rb +3 -4
  14. data/lib/liquid/tags/for.rb +53 -35
  15. data/lib/liquid/tags/if.rb +3 -3
  16. data/lib/liquid/template.rb +8 -7
  17. data/lib/liquid/variable.rb +10 -11
  18. metadata +5 -35
  19. data/example/server/example_servlet.rb +0 -37
  20. data/example/server/liquid_servlet.rb +0 -28
  21. data/example/server/server.rb +0 -12
  22. data/example/server/templates/index.liquid +0 -6
  23. data/example/server/templates/products.liquid +0 -45
  24. data/test/block_test.rb +0 -58
  25. data/test/condition_test.rb +0 -109
  26. data/test/context_test.rb +0 -418
  27. data/test/drop_test.rb +0 -141
  28. data/test/error_handling_test.rb +0 -78
  29. data/test/extra/breakpoint.rb +0 -547
  30. data/test/extra/caller.rb +0 -80
  31. data/test/file_system_test.rb +0 -30
  32. data/test/filter_test.rb +0 -98
  33. data/test/helper.rb +0 -20
  34. data/test/html_tag_test.rb +0 -31
  35. data/test/if_else_test.rb +0 -127
  36. data/test/include_tag_test.rb +0 -114
  37. data/test/module_ex_test.rb +0 -89
  38. data/test/output_test.rb +0 -121
  39. data/test/parsing_quirks_test.rb +0 -29
  40. data/test/regexp_test.rb +0 -40
  41. data/test/security_test.rb +0 -41
  42. data/test/standard_filter_test.rb +0 -126
  43. data/test/standard_tag_test.rb +0 -383
  44. data/test/statements_test.rb +0 -137
  45. data/test/strainer_test.rb +0 -16
  46. data/test/template_test.rb +0 -26
  47. data/test/unless_else_test.rb +0 -27
  48. data/test/variable_test.rb +0 -135
@@ -1,16 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require File.dirname(__FILE__) + '/helper'
3
-
4
- class StrainerTest < Test::Unit::TestCase
5
- include Liquid
6
-
7
- def test_strainer
8
- strainer = Strainer.create(nil)
9
- assert_equal false, strainer.respond_to?('__test__')
10
- assert_equal false, strainer.respond_to?('test')
11
- assert_equal false, strainer.respond_to?('instance_eval')
12
- assert_equal false, strainer.respond_to?('__send__')
13
- assert_equal true, strainer.respond_to?('size') # from the standard lib
14
- end
15
-
16
- end
@@ -1,26 +0,0 @@
1
- require File.dirname(__FILE__) + '/helper'
2
-
3
- class TemplateTest < Test::Unit::TestCase
4
- include Liquid
5
-
6
- def test_tokenize_strings
7
- assert_equal [' '], Template.new.send(:tokenize, ' ')
8
- assert_equal ['hello world'], Template.new.send(:tokenize, 'hello world')
9
- end
10
-
11
- def test_tokenize_variables
12
- assert_equal ['{{funk}}'], Template.new.send(:tokenize, '{{funk}}')
13
- assert_equal [' ', '{{funk}}', ' '], Template.new.send(:tokenize, ' {{funk}} ')
14
- assert_equal [' ', '{{funk}}', ' ', '{{so}}', ' ', '{{brother}}', ' '], Template.new.send(:tokenize, ' {{funk}} {{so}} {{brother}} ')
15
- assert_equal [' ', '{{ funk }}', ' '], Template.new.send(:tokenize, ' {{ funk }} ')
16
- end
17
-
18
- def test_tokenize_blocks
19
- assert_equal ['{%comment%}'], Template.new.send(:tokenize, '{%comment%}')
20
- assert_equal [' ', '{%comment%}', ' '], Template.new.send(:tokenize, ' {%comment%} ')
21
-
22
- assert_equal [' ', '{%comment%}', ' ', '{%endcomment%}', ' '], Template.new.send(:tokenize, ' {%comment%} {%endcomment%} ')
23
- assert_equal [' ', '{% comment %}', ' ', '{% endcomment %}', ' '], Template.new.send(:tokenize, " {% comment %} {% endcomment %} ")
24
- end
25
-
26
- end
@@ -1,27 +0,0 @@
1
- require File.dirname(__FILE__) + '/helper'
2
-
3
- class UnlessElseTest < Test::Unit::TestCase
4
- include Liquid
5
-
6
- def test_unless
7
- assert_template_result(' ',' {% unless true %} this text should not go into the output {% endunless %} ')
8
- assert_template_result(' this text should go into the output ',
9
- ' {% unless false %} this text should go into the output {% endunless %} ')
10
- assert_template_result(' you rock ?','{% unless true %} you suck {% endunless %} {% unless false %} you rock {% endunless %}?')
11
- end
12
-
13
- def test_unless_else
14
- assert_template_result(' YES ','{% unless true %} NO {% else %} YES {% endunless %}')
15
- assert_template_result(' YES ','{% unless false %} YES {% else %} NO {% endunless %}')
16
- assert_template_result(' YES ','{% unless "foo" %} NO {% else %} YES {% endunless %}')
17
- end
18
-
19
- def test_unless_in_loop
20
- assert_template_result '23', '{% for i in choices %}{% unless i %}{{ forloop.index }}{% endunless %}{% endfor %}', 'choices' => [1, nil, false]
21
- end
22
-
23
- def test_unless_else_in_loop
24
- assert_template_result ' TRUE 2 3 ', '{% for i in choices %}{% unless i %} {{ forloop.index }} {% else %} TRUE {% endunless %}{% endfor %}', 'choices' => [1, nil, false]
25
- end
26
-
27
- end
@@ -1,135 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require File.dirname(__FILE__) + '/helper'
3
-
4
- class VariableTest < Test::Unit::TestCase
5
- include Liquid
6
-
7
- def test_variable
8
- var = Variable.new('hello')
9
- assert_equal 'hello', var.name
10
- end
11
-
12
- def test_filters
13
- var = Variable.new('hello | textileze')
14
- assert_equal 'hello', var.name
15
- assert_equal [[:textileze,[]]], var.filters
16
-
17
- var = Variable.new('hello | textileze | paragraph')
18
- assert_equal 'hello', var.name
19
- assert_equal [[:textileze,[]], [:paragraph,[]]], var.filters
20
-
21
- var = Variable.new(%! hello | strftime: '%Y'!)
22
- assert_equal 'hello', var.name
23
- assert_equal [[:strftime,["'%Y'"]]], var.filters
24
-
25
- var = Variable.new(%! 'typo' | link_to: 'Typo', true !)
26
- assert_equal %!'typo'!, var.name
27
- assert_equal [[:link_to,["'Typo'", "true"]]], var.filters
28
-
29
- var = Variable.new(%! 'typo' | link_to: 'Typo', false !)
30
- assert_equal %!'typo'!, var.name
31
- assert_equal [[:link_to,["'Typo'", "false"]]], var.filters
32
-
33
- var = Variable.new(%! 'foo' | repeat: 3 !)
34
- assert_equal %!'foo'!, var.name
35
- assert_equal [[:repeat,["3"]]], var.filters
36
-
37
- var = Variable.new(%! 'foo' | repeat: 3, 3 !)
38
- assert_equal %!'foo'!, var.name
39
- assert_equal [[:repeat,["3","3"]]], var.filters
40
-
41
- var = Variable.new(%! 'foo' | repeat: 3, 3, 3 !)
42
- assert_equal %!'foo'!, var.name
43
- assert_equal [[:repeat,["3","3","3"]]], var.filters
44
-
45
- var = Variable.new(%! hello | strftime: '%Y, okay?'!)
46
- assert_equal 'hello', var.name
47
- assert_equal [[:strftime,["'%Y, okay?'"]]], var.filters
48
-
49
- var = Variable.new(%! hello | things: "%Y, okay?", 'the other one'!)
50
- assert_equal 'hello', var.name
51
- assert_equal [[:things,["\"%Y, okay?\"","'the other one'"]]], var.filters
52
- end
53
-
54
- def test_filter_with_date_parameter
55
-
56
- var = Variable.new(%! '2006-06-06' | date: "%m/%d/%Y"!)
57
- assert_equal "'2006-06-06'", var.name
58
- assert_equal [[:date,["\"%m/%d/%Y\""]]], var.filters
59
-
60
- end
61
-
62
- def test_filters_without_whitespace
63
- var = Variable.new('hello | textileze | paragraph')
64
- assert_equal 'hello', var.name
65
- assert_equal [[:textileze,[]], [:paragraph,[]]], var.filters
66
-
67
- var = Variable.new('hello|textileze|paragraph')
68
- assert_equal 'hello', var.name
69
- assert_equal [[:textileze,[]], [:paragraph,[]]], var.filters
70
- end
71
-
72
- def test_symbol
73
- var = Variable.new("http://disney.com/logo.gif | image: 'med' ")
74
- assert_equal 'http://disney.com/logo.gif', var.name
75
- assert_equal [[:image,["'med'"]]], var.filters
76
- end
77
-
78
- def test_string_single_quoted
79
- var = Variable.new(%| "hello" |)
80
- assert_equal '"hello"', var.name
81
- end
82
-
83
- def test_string_double_quoted
84
- var = Variable.new(%| 'hello' |)
85
- assert_equal "'hello'", var.name
86
- end
87
-
88
- def test_integer
89
- var = Variable.new(%| 1000 |)
90
- assert_equal "1000", var.name
91
- end
92
-
93
- def test_float
94
- var = Variable.new(%| 1000.01 |)
95
- assert_equal "1000.01", var.name
96
- end
97
-
98
- def test_string_with_special_chars
99
- var = Variable.new(%| 'hello! $!@.;"ddasd" ' |)
100
- assert_equal %|'hello! $!@.;"ddasd" '|, var.name
101
- end
102
-
103
- def test_string_dot
104
- var = Variable.new(%| test.test |)
105
- assert_equal 'test.test', var.name
106
- end
107
- end
108
-
109
-
110
- class VariableResolutionTest < Test::Unit::TestCase
111
- include Liquid
112
-
113
- def test_simple_variable
114
- template = Template.parse(%|{{test}}|)
115
- assert_equal 'worked', template.render('test' => 'worked')
116
- assert_equal 'worked wonderfully', template.render('test' => 'worked wonderfully')
117
- end
118
-
119
- def test_simple_with_whitespaces
120
- template = Template.parse(%| {{ test }} |)
121
- assert_equal ' worked ', template.render('test' => 'worked')
122
- assert_equal ' worked wonderfully ', template.render('test' => 'worked wonderfully')
123
- end
124
-
125
- def test_ignore_unknown
126
- template = Template.parse(%|{{ test }}|)
127
- assert_equal '', template.render
128
- end
129
-
130
- def test_hash_scoping
131
- template = Template.parse(%|{{ test.test }}|)
132
- assert_equal 'worked', template.render('test' => {'test' => 'worked'})
133
- end
134
-
135
- end