liquid 3.0.6 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (98) hide show
  1. checksums.yaml +4 -4
  2. data/History.md +98 -58
  3. data/README.md +31 -0
  4. data/lib/liquid/block.rb +31 -124
  5. data/lib/liquid/block_body.rb +75 -59
  6. data/lib/liquid/condition.rb +23 -22
  7. data/lib/liquid/context.rb +50 -46
  8. data/lib/liquid/document.rb +19 -9
  9. data/lib/liquid/drop.rb +17 -16
  10. data/lib/liquid/errors.rb +20 -24
  11. data/lib/liquid/expression.rb +15 -3
  12. data/lib/liquid/extensions.rb +13 -7
  13. data/lib/liquid/file_system.rb +11 -11
  14. data/lib/liquid/forloop_drop.rb +42 -0
  15. data/lib/liquid/i18n.rb +5 -5
  16. data/lib/liquid/interrupts.rb +1 -2
  17. data/lib/liquid/lexer.rb +6 -4
  18. data/lib/liquid/locales/en.yml +5 -1
  19. data/lib/liquid/parse_context.rb +37 -0
  20. data/lib/liquid/parser_switching.rb +4 -4
  21. data/lib/liquid/profiler/hooks.rb +7 -7
  22. data/lib/liquid/profiler.rb +18 -19
  23. data/lib/liquid/range_lookup.rb +16 -1
  24. data/lib/liquid/resource_limits.rb +23 -0
  25. data/lib/liquid/standardfilters.rb +121 -61
  26. data/lib/liquid/strainer.rb +14 -7
  27. data/lib/liquid/tablerowloop_drop.rb +62 -0
  28. data/lib/liquid/tag.rb +9 -8
  29. data/lib/liquid/tags/assign.rb +17 -4
  30. data/lib/liquid/tags/break.rb +0 -3
  31. data/lib/liquid/tags/capture.rb +1 -1
  32. data/lib/liquid/tags/case.rb +19 -12
  33. data/lib/liquid/tags/comment.rb +2 -2
  34. data/lib/liquid/tags/cycle.rb +6 -6
  35. data/lib/liquid/tags/decrement.rb +1 -4
  36. data/lib/liquid/tags/for.rb +95 -75
  37. data/lib/liquid/tags/if.rb +49 -44
  38. data/lib/liquid/tags/ifchanged.rb +0 -2
  39. data/lib/liquid/tags/include.rb +61 -52
  40. data/lib/liquid/tags/raw.rb +32 -4
  41. data/lib/liquid/tags/table_row.rb +12 -30
  42. data/lib/liquid/tags/unless.rb +3 -4
  43. data/lib/liquid/template.rb +42 -54
  44. data/lib/liquid/tokenizer.rb +31 -0
  45. data/lib/liquid/utils.rb +52 -8
  46. data/lib/liquid/variable.rb +46 -45
  47. data/lib/liquid/variable_lookup.rb +7 -5
  48. data/lib/liquid/version.rb +1 -1
  49. data/lib/liquid.rb +9 -7
  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 +99 -46
  56. data/test/integration/filter_test.rb +60 -20
  57. data/test/integration/hash_ordering_test.rb +9 -9
  58. data/test/integration/output_test.rb +26 -27
  59. data/test/integration/parsing_quirks_test.rb +15 -13
  60. data/test/integration/render_profiling_test.rb +20 -20
  61. data/test/integration/security_test.rb +9 -7
  62. data/test/integration/standard_filter_test.rb +179 -40
  63. data/test/integration/tags/break_tag_test.rb +1 -2
  64. data/test/integration/tags/continue_tag_test.rb +0 -1
  65. data/test/integration/tags/for_tag_test.rb +133 -98
  66. data/test/integration/tags/if_else_tag_test.rb +75 -77
  67. data/test/integration/tags/include_tag_test.rb +34 -30
  68. data/test/integration/tags/increment_tag_test.rb +10 -11
  69. data/test/integration/tags/raw_tag_test.rb +7 -1
  70. data/test/integration/tags/standard_tag_test.rb +121 -122
  71. data/test/integration/tags/statements_test.rb +3 -5
  72. data/test/integration/tags/table_row_test.rb +20 -19
  73. data/test/integration/tags/unless_else_tag_test.rb +6 -6
  74. data/test/integration/template_test.rb +190 -49
  75. data/test/integration/trim_mode_test.rb +525 -0
  76. data/test/integration/variable_test.rb +23 -13
  77. data/test/test_helper.rb +33 -5
  78. data/test/unit/block_unit_test.rb +8 -5
  79. data/test/unit/condition_unit_test.rb +86 -77
  80. data/test/unit/context_unit_test.rb +48 -57
  81. data/test/unit/file_system_unit_test.rb +3 -3
  82. data/test/unit/i18n_unit_test.rb +2 -2
  83. data/test/unit/lexer_unit_test.rb +11 -8
  84. data/test/unit/parser_unit_test.rb +2 -2
  85. data/test/unit/regexp_unit_test.rb +1 -1
  86. data/test/unit/strainer_unit_test.rb +80 -1
  87. data/test/unit/tag_unit_test.rb +7 -2
  88. data/test/unit/tags/case_tag_unit_test.rb +1 -1
  89. data/test/unit/tags/for_tag_unit_test.rb +2 -2
  90. data/test/unit/tags/if_tag_unit_test.rb +1 -1
  91. data/test/unit/template_unit_test.rb +14 -5
  92. data/test/unit/tokenizer_unit_test.rb +24 -7
  93. data/test/unit/variable_unit_test.rb +60 -43
  94. metadata +19 -14
  95. data/lib/liquid/module_ex.rb +0 -62
  96. data/lib/liquid/token.rb +0 -18
  97. data/test/unit/module_ex_unit_test.rb +0 -87
  98. /data/{MIT-LICENSE → LICENSE} +0 -0
@@ -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
File without changes