drnic-liquid 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (113) hide show
  1. data/CHANGELOG +44 -0
  2. data/History.txt +44 -0
  3. data/MIT-LICENSE +20 -0
  4. data/Manifest.txt +34 -0
  5. data/README.rdoc +44 -0
  6. data/Rakefile +30 -0
  7. data/example/server/example_servlet.rb +37 -0
  8. data/example/server/liquid_servlet.rb +28 -0
  9. data/example/server/server.rb +12 -0
  10. data/example/server/templates/index.liquid +6 -0
  11. data/example/server/templates/products.liquid +45 -0
  12. data/init.rb +8 -0
  13. data/lib/extras/liquid_view.rb +51 -0
  14. data/lib/liquid.rb +70 -0
  15. data/lib/liquid/block.rb +102 -0
  16. data/lib/liquid/condition.rb +120 -0
  17. data/lib/liquid/context.rb +221 -0
  18. data/lib/liquid/document.rb +17 -0
  19. data/lib/liquid/drop.rb +51 -0
  20. data/lib/liquid/errors.rb +11 -0
  21. data/lib/liquid/extensions.rb +56 -0
  22. data/lib/liquid/file_system.rb +62 -0
  23. data/lib/liquid/htmltags.rb +74 -0
  24. data/lib/liquid/module_ex.rb +62 -0
  25. data/lib/liquid/standardfilters.rb +209 -0
  26. data/lib/liquid/strainer.rb +51 -0
  27. data/lib/liquid/tag.rb +26 -0
  28. data/lib/liquid/tags/assign.rb +33 -0
  29. data/lib/liquid/tags/capture.rb +35 -0
  30. data/lib/liquid/tags/case.rb +83 -0
  31. data/lib/liquid/tags/comment.rb +9 -0
  32. data/lib/liquid/tags/cycle.rb +59 -0
  33. data/lib/liquid/tags/for.rb +136 -0
  34. data/lib/liquid/tags/if.rb +79 -0
  35. data/lib/liquid/tags/ifchanged.rb +20 -0
  36. data/lib/liquid/tags/include.rb +55 -0
  37. data/lib/liquid/tags/unless.rb +33 -0
  38. data/lib/liquid/template.rb +147 -0
  39. data/lib/liquid/variable.rb +49 -0
  40. data/liquid.gemspec +40 -0
  41. data/performance/shopify.rb +92 -0
  42. data/performance/shopify/comment_form.rb +33 -0
  43. data/performance/shopify/database.rb +45 -0
  44. data/performance/shopify/json_filter.rb +7 -0
  45. data/performance/shopify/liquid.rb +18 -0
  46. data/performance/shopify/money_filter.rb +18 -0
  47. data/performance/shopify/paginate.rb +93 -0
  48. data/performance/shopify/shop_filter.rb +98 -0
  49. data/performance/shopify/tag_filter.rb +25 -0
  50. data/performance/shopify/vision.database.yml +945 -0
  51. data/performance/shopify/weight_filter.rb +11 -0
  52. data/performance/tests/dropify/article.liquid +74 -0
  53. data/performance/tests/dropify/blog.liquid +33 -0
  54. data/performance/tests/dropify/cart.liquid +66 -0
  55. data/performance/tests/dropify/collection.liquid +22 -0
  56. data/performance/tests/dropify/index.liquid +47 -0
  57. data/performance/tests/dropify/page.liquid +8 -0
  58. data/performance/tests/dropify/product.liquid +68 -0
  59. data/performance/tests/dropify/theme.liquid +105 -0
  60. data/performance/tests/ripen/article.liquid +74 -0
  61. data/performance/tests/ripen/blog.liquid +13 -0
  62. data/performance/tests/ripen/cart.liquid +54 -0
  63. data/performance/tests/ripen/collection.liquid +29 -0
  64. data/performance/tests/ripen/index.liquid +32 -0
  65. data/performance/tests/ripen/page.liquid +4 -0
  66. data/performance/tests/ripen/product.liquid +75 -0
  67. data/performance/tests/ripen/theme.liquid +85 -0
  68. data/performance/tests/tribble/404.liquid +56 -0
  69. data/performance/tests/tribble/article.liquid +98 -0
  70. data/performance/tests/tribble/blog.liquid +41 -0
  71. data/performance/tests/tribble/cart.liquid +134 -0
  72. data/performance/tests/tribble/collection.liquid +70 -0
  73. data/performance/tests/tribble/index.liquid +94 -0
  74. data/performance/tests/tribble/page.liquid +56 -0
  75. data/performance/tests/tribble/product.liquid +116 -0
  76. data/performance/tests/tribble/search.liquid +51 -0
  77. data/performance/tests/tribble/theme.liquid +90 -0
  78. data/performance/tests/vogue/article.liquid +66 -0
  79. data/performance/tests/vogue/blog.liquid +32 -0
  80. data/performance/tests/vogue/cart.liquid +58 -0
  81. data/performance/tests/vogue/collection.liquid +19 -0
  82. data/performance/tests/vogue/index.liquid +22 -0
  83. data/performance/tests/vogue/page.liquid +3 -0
  84. data/performance/tests/vogue/product.liquid +62 -0
  85. data/performance/tests/vogue/theme.liquid +122 -0
  86. data/test/assign_test.rb +11 -0
  87. data/test/block_test.rb +58 -0
  88. data/test/condition_test.rb +109 -0
  89. data/test/context_test.rb +482 -0
  90. data/test/drop_test.rb +162 -0
  91. data/test/error_handling_test.rb +89 -0
  92. data/test/extra/breakpoint.rb +547 -0
  93. data/test/extra/caller.rb +80 -0
  94. data/test/file_system_test.rb +30 -0
  95. data/test/filter_test.rb +95 -0
  96. data/test/helper.rb +20 -0
  97. data/test/html_tag_test.rb +31 -0
  98. data/test/if_else_test.rb +131 -0
  99. data/test/include_tag_test.rb +115 -0
  100. data/test/module_ex_test.rb +89 -0
  101. data/test/output_test.rb +121 -0
  102. data/test/parsing_quirks_test.rb +41 -0
  103. data/test/regexp_test.rb +45 -0
  104. data/test/security_test.rb +41 -0
  105. data/test/standard_filter_test.rb +161 -0
  106. data/test/standard_tag_test.rb +400 -0
  107. data/test/statements_test.rb +137 -0
  108. data/test/strainer_test.rb +21 -0
  109. data/test/template_test.rb +26 -0
  110. data/test/test_helper.rb +20 -0
  111. data/test/unless_else_test.rb +27 -0
  112. data/test/variable_test.rb +172 -0
  113. metadata +187 -0
@@ -0,0 +1,21 @@
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
+ def test_should_respond_to_two_parameters
17
+ strainer = Strainer.create(nil)
18
+ assert_equal true, strainer.respond_to?('size', false)
19
+ end
20
+
21
+ end
@@ -0,0 +1,26 @@
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%}', ' ', '{%end%}', ' '], Template.new.send(:tokenize, ' {%comment%} {%end%} ')
23
+ assert_equal [' ', '{% comment %}', ' ', '{% end %}', ' '], Template.new.send(:tokenize, " {% comment %} {% end %} ")
24
+ end
25
+
26
+ end
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env ruby
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__)+ '/extra')
3
+
4
+ require 'test/unit'
5
+ require 'test/unit/assertions'
6
+ require 'caller'
7
+ require 'breakpoint'
8
+ require File.dirname(__FILE__) + '/../lib/liquid'
9
+
10
+
11
+ module Test
12
+ module Unit
13
+ module Assertions
14
+ include Liquid
15
+ def assert_template_result(expected, template, assigns={}, message=nil)
16
+ assert_equal expected, Template.parse(template).render(assigns)
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,27 @@
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 {% end %} ')
8
+ assert_template_result(' this text should go into the output ',
9
+ ' {% unless false %} this text should go into the output {% end %} ')
10
+ assert_template_result(' you rock ?','{% unless true %} you suck {% end %} {% unless false %} you rock {% end %}?')
11
+ end
12
+
13
+ def test_unless_else
14
+ assert_template_result(' YES ','{% unless true %} NO {% else %} YES {% end %}')
15
+ assert_template_result(' YES ','{% unless false %} YES {% else %} NO {% end %}')
16
+ assert_template_result(' YES ','{% unless "foo" %} NO {% else %} YES {% end %}')
17
+ end
18
+
19
+ def test_unless_in_loop
20
+ assert_template_result '23', '{% for i in choices %}{% unless i %}{{ forloop.index }}{% end %}{% end %}', '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 {% end %}{% end %}', 'choices' => [1, nil, false]
25
+ end
26
+
27
+ end
@@ -0,0 +1,172 @@
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
+ def test_preset_assigns
136
+ template = Template.parse(%|{{ test }}|)
137
+ template.assigns['test'] = 'worked'
138
+ assert_equal 'worked', template.render
139
+ end
140
+
141
+ def test_reuse_parsed_template
142
+ template = Template.parse(%|{{ greeting }} {{ name }}|)
143
+ template.assigns['greeting'] = 'Goodbye'
144
+ assert_equal 'Hello Tobi', template.render('greeting' => 'Hello', 'name' => 'Tobi')
145
+ assert_equal 'Hello ', template.render('greeting' => 'Hello', 'unknown' => 'Tobi')
146
+ assert_equal 'Hello Brian', template.render('greeting' => 'Hello', 'name' => 'Brian')
147
+ assert_equal 'Goodbye Brian', template.render('name' => 'Brian')
148
+ assert_equal({'greeting'=>'Goodbye'}, template.assigns)
149
+ end
150
+
151
+ def test_assigns_not_polluted_from_template
152
+ template = Template.parse(%|{{ test }}{% assign test = 'bar' %}{{ test }}|)
153
+ template.assigns['test'] = 'baz'
154
+ assert_equal 'bazbar', template.render
155
+ assert_equal 'bazbar', template.render
156
+ assert_equal 'foobar', template.render('test' => 'foo')
157
+ assert_equal 'bazbar', template.render
158
+ end
159
+
160
+ def test_hash_with_default_proc
161
+ template = Template.parse(%|Hello {{ test }}|)
162
+ assigns = Hash.new { |h,k| raise "Unknown variable '#{k}'" }
163
+ assigns['test'] = 'Tobi'
164
+ assert_equal 'Hello Tobi', template.render!(assigns)
165
+ assigns.delete('test')
166
+ e = assert_raises(RuntimeError) {
167
+ template.render!(assigns)
168
+ }
169
+ assert_equal "Unknown variable 'test'", e.message
170
+ end
171
+
172
+ end
metadata ADDED
@@ -0,0 +1,187 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: drnic-liquid
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Tobias Luetke
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-08-31 00:00:00 +10:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: hoe
17
+ type: :development
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 2.3.3
24
+ version:
25
+ description: |-
26
+ A secure non evaling end user template engine with aesthetic markup.
27
+
28
+ Liquid is a template engine which I wrote for very specific requirements.
29
+
30
+ * It has to have beautiful and simple markup.
31
+ Template engines which don't produce good looking markup are no fun to use.
32
+ * It needs to be non evaling and secure. Liquid templates are made so that users can edit them. You don't want to run code on your server which your users wrote.
33
+ * It has to be stateless. Compile and render steps have to be seperate so that the expensive parsing and compiling can be done once and later on you can
34
+ just render it passing in a hash with local variables and objects.
35
+ email:
36
+ - tobi@leetsoft.com
37
+ executables: []
38
+
39
+ extensions: []
40
+
41
+ extra_rdoc_files:
42
+ - History.txt
43
+ - Manifest.txt
44
+ files:
45
+ - CHANGELOG
46
+ - History.txt
47
+ - MIT-LICENSE
48
+ - Manifest.txt
49
+ - README.rdoc
50
+ - Rakefile
51
+ - example/server/example_servlet.rb
52
+ - example/server/liquid_servlet.rb
53
+ - example/server/server.rb
54
+ - example/server/templates/index.liquid
55
+ - example/server/templates/products.liquid
56
+ - init.rb
57
+ - lib/extras/liquid_view.rb
58
+ - lib/liquid.rb
59
+ - lib/liquid/block.rb
60
+ - lib/liquid/condition.rb
61
+ - lib/liquid/context.rb
62
+ - lib/liquid/document.rb
63
+ - lib/liquid/drop.rb
64
+ - lib/liquid/errors.rb
65
+ - lib/liquid/extensions.rb
66
+ - lib/liquid/file_system.rb
67
+ - lib/liquid/htmltags.rb
68
+ - lib/liquid/module_ex.rb
69
+ - lib/liquid/standardfilters.rb
70
+ - lib/liquid/strainer.rb
71
+ - lib/liquid/tag.rb
72
+ - lib/liquid/tags/assign.rb
73
+ - lib/liquid/tags/capture.rb
74
+ - lib/liquid/tags/case.rb
75
+ - lib/liquid/tags/comment.rb
76
+ - lib/liquid/tags/cycle.rb
77
+ - lib/liquid/tags/for.rb
78
+ - lib/liquid/tags/if.rb
79
+ - lib/liquid/tags/ifchanged.rb
80
+ - lib/liquid/tags/include.rb
81
+ - lib/liquid/tags/unless.rb
82
+ - lib/liquid/template.rb
83
+ - lib/liquid/variable.rb
84
+ - liquid.gemspec
85
+ - performance/shopify.rb
86
+ - performance/shopify/comment_form.rb
87
+ - performance/shopify/database.rb
88
+ - performance/shopify/json_filter.rb
89
+ - performance/shopify/liquid.rb
90
+ - performance/shopify/money_filter.rb
91
+ - performance/shopify/paginate.rb
92
+ - performance/shopify/shop_filter.rb
93
+ - performance/shopify/tag_filter.rb
94
+ - performance/shopify/vision.database.yml
95
+ - performance/shopify/weight_filter.rb
96
+ - performance/tests/dropify/article.liquid
97
+ - performance/tests/dropify/blog.liquid
98
+ - performance/tests/dropify/cart.liquid
99
+ - performance/tests/dropify/collection.liquid
100
+ - performance/tests/dropify/index.liquid
101
+ - performance/tests/dropify/page.liquid
102
+ - performance/tests/dropify/product.liquid
103
+ - performance/tests/dropify/theme.liquid
104
+ - performance/tests/ripen/article.liquid
105
+ - performance/tests/ripen/blog.liquid
106
+ - performance/tests/ripen/cart.liquid
107
+ - performance/tests/ripen/collection.liquid
108
+ - performance/tests/ripen/index.liquid
109
+ - performance/tests/ripen/page.liquid
110
+ - performance/tests/ripen/product.liquid
111
+ - performance/tests/ripen/theme.liquid
112
+ - performance/tests/tribble/404.liquid
113
+ - performance/tests/tribble/article.liquid
114
+ - performance/tests/tribble/blog.liquid
115
+ - performance/tests/tribble/cart.liquid
116
+ - performance/tests/tribble/collection.liquid
117
+ - performance/tests/tribble/index.liquid
118
+ - performance/tests/tribble/page.liquid
119
+ - performance/tests/tribble/product.liquid
120
+ - performance/tests/tribble/search.liquid
121
+ - performance/tests/tribble/theme.liquid
122
+ - performance/tests/vogue/article.liquid
123
+ - performance/tests/vogue/blog.liquid
124
+ - performance/tests/vogue/cart.liquid
125
+ - performance/tests/vogue/collection.liquid
126
+ - performance/tests/vogue/index.liquid
127
+ - performance/tests/vogue/page.liquid
128
+ - performance/tests/vogue/product.liquid
129
+ - performance/tests/vogue/theme.liquid
130
+ - test/assign_test.rb
131
+ - test/block_test.rb
132
+ - test/condition_test.rb
133
+ - test/context_test.rb
134
+ - test/drop_test.rb
135
+ - test/error_handling_test.rb
136
+ - test/extra/breakpoint.rb
137
+ - test/extra/caller.rb
138
+ - test/file_system_test.rb
139
+ - test/filter_test.rb
140
+ - test/helper.rb
141
+ - test/html_tag_test.rb
142
+ - test/if_else_test.rb
143
+ - test/include_tag_test.rb
144
+ - test/module_ex_test.rb
145
+ - test/output_test.rb
146
+ - test/parsing_quirks_test.rb
147
+ - test/regexp_test.rb
148
+ - test/security_test.rb
149
+ - test/standard_filter_test.rb
150
+ - test/standard_tag_test.rb
151
+ - test/statements_test.rb
152
+ - test/strainer_test.rb
153
+ - test/template_test.rb
154
+ - test/test_helper.rb
155
+ - test/unless_else_test.rb
156
+ - test/variable_test.rb
157
+ has_rdoc: true
158
+ homepage: http://www.liquidmarkup.org
159
+ licenses: []
160
+
161
+ post_install_message:
162
+ rdoc_options:
163
+ - --main
164
+ - README.rdoc
165
+ require_paths:
166
+ - lib
167
+ required_ruby_version: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - ">="
170
+ - !ruby/object:Gem::Version
171
+ version: "0"
172
+ version:
173
+ required_rubygems_version: !ruby/object:Gem::Requirement
174
+ requirements:
175
+ - - ">="
176
+ - !ruby/object:Gem::Version
177
+ version: "0"
178
+ version:
179
+ requirements: []
180
+
181
+ rubyforge_project: liquid
182
+ rubygems_version: 1.3.5
183
+ signing_key:
184
+ specification_version: 3
185
+ summary: A secure non evaling end user template engine with aesthetic markup
186
+ test_files:
187
+ - test/test_helper.rb