shopify_liquid_test_helper 0.1.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +56 -2
- data/lib/shopify_liquid_test_helper/integration.rb +1 -0
- data/lib/shopify_liquid_test_helper/matchers.rb +40 -0
- data/lib/shopify_liquid_test_helper/rspec_configuration.rb +13 -0
- data/lib/shopify_liquid_test_helper/test_helpers.rb +26 -0
- data/lib/shopify_liquid_test_helper.rb +22 -10
- data/spec/{render_tag_spec.rb → shopify_liquid_test_helper_spec.rb} +8 -26
- data/spec/spec_helper.rb +5 -5
- metadata +22 -6
- data/lib/shopify_liquid_test_helper/capture_tag.rb +0 -14
- data/lib/shopify_liquid_test_helper/render_tag.rb +0 -107
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0ddfc04095edd38e1d15ea3077d4023f1e45c1527c8d8296180f6fe31ecd69f2
|
4
|
+
data.tar.gz: 8394cc4880370163215a194c95cc256acc7bc20f19dedf5ed4623af839f53bc1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 63bab7c6a918c254bacbfa8343a1383b3f2ce73c495016f26ab82ce31533766a02e1cd54a33ec9d9d83658c022e5809f5cb68c4786599fec7f3a3812c78c2240
|
7
|
+
data.tar.gz: 49711d147d87237160f6fef93b64297ec8a18a9632ae3441944e6cbd553bb539eb03118cd14e51cea122b00ea8c078ada47fa2d64fca4b67138f26333b92ecd3
|
data/README.md
CHANGED
@@ -7,7 +7,6 @@ ShopifyLiquidTestHelper is a Ruby gem designed to assist in testing Shopify Liqu
|
|
7
7
|
| Tag | Status |
|
8
8
|
| --- | ------ |
|
9
9
|
| `render` | ✅ |
|
10
|
-
| `capture` | ✅ |
|
11
10
|
|
12
11
|
|
13
12
|
## Installation
|
@@ -138,6 +137,61 @@ end
|
|
138
137
|
|
139
138
|
ShopifyLiquidTestHelper will automatically load the `product_card` snippet from the `snippets` directory when you use the `render` tag in your Liquid template.
|
140
139
|
|
140
|
+
|
141
|
+
### Mocking render with `allow` in RSpec
|
142
|
+
|
143
|
+
ShopifyLiquidTestHelper provides functionality to mock Liquid snippets using RSpec's `allow` method. This is particularly useful when testing templates that depend on other snippets.
|
144
|
+
|
145
|
+
Here's a simple example of how to use `allow` for mocking:
|
146
|
+
|
147
|
+
```liquid
|
148
|
+
<!-- snippets/product.liquid -->
|
149
|
+
<div class="product">
|
150
|
+
<h1>{{ product.title }}</h1>
|
151
|
+
<div class="price">
|
152
|
+
{% render 'product_price' %}
|
153
|
+
</div>
|
154
|
+
<div class="description">
|
155
|
+
{{ product.description }}
|
156
|
+
</div>
|
157
|
+
{% if product.available %}
|
158
|
+
<button type="button" class="add-to-cart">Add to Cart</button>
|
159
|
+
{% else %}
|
160
|
+
<p>Sold Out</p>
|
161
|
+
{% endif %}
|
162
|
+
</div>
|
163
|
+
```
|
164
|
+
|
165
|
+
|
166
|
+
```ruby
|
167
|
+
RSpec.describe 'ProductTemplate' do
|
168
|
+
let(:template) { ShopifyLiquidTestHelper.parse_template('snippets/product.liquid') }
|
169
|
+
let(:product) { { 'title' => 'Test Product', 'price' => 1000 } }
|
170
|
+
|
171
|
+
before do
|
172
|
+
# Mock the 'product_price' snippet to return a formatted price
|
173
|
+
allow(ShopifyLiquidTestHelper).to receive(:get_snippet).with('product_price').and_return('{{ product.price | money }}')
|
174
|
+
end
|
175
|
+
|
176
|
+
it 'renders the product title and price' do
|
177
|
+
rendered = template.render('product' => product)
|
178
|
+
expect(rendered).to include('Test Product')
|
179
|
+
expect(rendered).to include('$10.00')
|
180
|
+
end
|
181
|
+
|
182
|
+
context 'when the product is on sale' do
|
183
|
+
before do
|
184
|
+
# Override the mock for a specific test
|
185
|
+
allow(ShopifyLiquidTestHelper).to receive(:get_snippet).with('product_price').and_return('On Sale: {{ product.price | money }}')
|
186
|
+
end
|
187
|
+
|
188
|
+
it 'shows the sale price' do
|
189
|
+
rendered = template.render('product' => product)
|
190
|
+
expect(rendered).to include('On Sale: $10.00')
|
191
|
+
end
|
192
|
+
end
|
193
|
+
end
|
194
|
+
|
141
195
|
### Customizing the Snippets Directory
|
142
196
|
|
143
197
|
If your snippets are located in a different directory, you can specify the path when initializing ShopifyLiquidTestHelper:
|
@@ -216,7 +270,7 @@ This gem allows you to test your Shopify Liquid templates thoroughly, ensuring t
|
|
216
270
|
|
217
271
|
## Contributing
|
218
272
|
|
219
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
273
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/giwa/shopify_liquid_test_helper.
|
220
274
|
|
221
275
|
## License
|
222
276
|
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'shopify_liquid_test_helper/rspec_configuration'
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module ShopifyLiquidTestHelper
|
2
|
+
module Matchers
|
3
|
+
extend RSpec::Matchers::DSL
|
4
|
+
|
5
|
+
matcher :render_liquid_template do |expected|
|
6
|
+
match do |template|
|
7
|
+
@rendered = if template.is_a?(String)
|
8
|
+
Liquid::Template.parse(template).render(@assigns)
|
9
|
+
elsif template.is_a?(Liquid::Template)
|
10
|
+
template.render(@assigns)
|
11
|
+
else
|
12
|
+
raise ArgumentError, "Template must be a String or Liquid::Template object"
|
13
|
+
end
|
14
|
+
@rendered == expected
|
15
|
+
end
|
16
|
+
|
17
|
+
chain :with do |assigns|
|
18
|
+
@assigns = assigns
|
19
|
+
end
|
20
|
+
|
21
|
+
failure_message do |template|
|
22
|
+
"expected that Liquid template \"#{template}\" " \
|
23
|
+
"would render as \"#{expected}\", but got \"#{@rendered}\""
|
24
|
+
end
|
25
|
+
|
26
|
+
failure_message_when_negated do |template|
|
27
|
+
"expected that Liquid template \"#{template}\" " \
|
28
|
+
"would not render as \"#{expected}\", but it did"
|
29
|
+
end
|
30
|
+
|
31
|
+
description do
|
32
|
+
"render Liquid template to \"#{expected}\""
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def expect_liquid_template_result(template, expected, assigns = {})
|
37
|
+
expect(template).to render_liquid_template(expected).with(assigns)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'rspec'
|
2
|
+
require 'shopify_liquid_test_helper/test_helpers'
|
3
|
+
require 'shopify_liquid_test_helper/matchers'
|
4
|
+
|
5
|
+
RSpec.configure do |config|
|
6
|
+
config.include ShopifyLiquidTestHelper::Matchers
|
7
|
+
config.include ShopifyLiquidTestHelper::TestHelpers
|
8
|
+
|
9
|
+
config.before(:all) do
|
10
|
+
ShopifyLiquidTestHelper.register_custom_tags
|
11
|
+
ShopifyLiquidTestHelper.reset_snippets
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module ShopifyLiquidTestHelper
|
2
|
+
module TestHelpers
|
3
|
+
def parse_liquid(template)
|
4
|
+
Liquid::Template.parse(template)
|
5
|
+
end
|
6
|
+
|
7
|
+
def parse_liquid_file(template_name)
|
8
|
+
Liquid::Template.parse(File.read(template_name))
|
9
|
+
end
|
10
|
+
|
11
|
+
def render_liquid(template, assigns = {})
|
12
|
+
case template
|
13
|
+
when String
|
14
|
+
parse_liquid(template).render(assigns)
|
15
|
+
when Liquid::Template
|
16
|
+
template.render(assigns)
|
17
|
+
else
|
18
|
+
raise ArgumentError, "Template must be a String or Liquid::Template object"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def register_snippet(name, content)
|
23
|
+
ShopifyLiquidTestHelper.register_snippet(name, content)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -1,19 +1,18 @@
|
|
1
|
+
require 'shopify_liquid_simulator'
|
1
2
|
require 'liquid'
|
2
|
-
require 'shopify_liquid_test_helper/render_tag'
|
3
|
-
require 'shopify_liquid_test_helper/capture_tag'
|
4
3
|
|
5
4
|
module ShopifyLiquidTestHelper
|
6
5
|
class << self
|
7
6
|
attr_accessor :snippets_dir
|
7
|
+
attr_writer :snippet_provider
|
8
8
|
|
9
|
-
def
|
9
|
+
def parse_liquid_file(template_name)
|
10
10
|
Liquid::Template.parse(File.read(template_name))
|
11
11
|
end
|
12
12
|
|
13
13
|
def register_custom_tags
|
14
|
-
|
15
|
-
|
16
|
-
Liquid::Template.register_tag('capture', CaptureTag)
|
14
|
+
ShopifyLiquidSimulator.register_tags
|
15
|
+
ShopifyLiquidSimulator::Render.snippet_provider = method(:get_snippet)
|
17
16
|
end
|
18
17
|
|
19
18
|
def register_snippet(name, content)
|
@@ -21,13 +20,25 @@ module ShopifyLiquidTestHelper
|
|
21
20
|
end
|
22
21
|
|
23
22
|
def get_snippet(name)
|
24
|
-
|
23
|
+
snippet_provider.call(name)
|
24
|
+
end
|
25
|
+
|
26
|
+
def reset_snippets
|
27
|
+
Thread.current[:snippets] = {}
|
28
|
+
end
|
29
|
+
|
30
|
+
def snippet_provider
|
31
|
+
@snippet_provider ||= method(:default_snippet_provider)
|
25
32
|
end
|
26
33
|
|
27
34
|
private
|
28
35
|
|
29
36
|
def snippets
|
30
|
-
|
37
|
+
Thread.current[:snippets] ||= {}
|
38
|
+
end
|
39
|
+
|
40
|
+
def default_snippet_provider(name)
|
41
|
+
snippets[name] || load_snippet(name)
|
31
42
|
end
|
32
43
|
|
33
44
|
def load_snippet(name)
|
@@ -42,6 +53,7 @@ module ShopifyLiquidTestHelper
|
|
42
53
|
end
|
43
54
|
end
|
44
55
|
|
45
|
-
# デフォルトのsnippetsディレクトリを設定
|
46
56
|
@snippets_dir = 'snippets'
|
47
|
-
end
|
57
|
+
end
|
58
|
+
|
59
|
+
require 'shopify_liquid_test_helper/integration' if defined?(RSpec)
|
@@ -1,8 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
RSpec.describe ShopifyLiquidTestHelper
|
3
|
+
RSpec.describe ShopifyLiquidTestHelper do
|
4
4
|
before(:all) do
|
5
|
-
ShopifyLiquidTestHelper.register_custom_tags
|
6
5
|
ShopifyLiquidTestHelper.register_snippet('simple', 'Hello, {{ name }}!')
|
7
6
|
ShopifyLiquidTestHelper.register_snippet('for_loop', 'Item: {{ item }}')
|
8
7
|
ShopifyLiquidTestHelper.register_snippet('with_object', 'Name: {{ object.name }}')
|
@@ -15,25 +14,25 @@ RSpec.describe ShopifyLiquidTestHelper::RenderTag do
|
|
15
14
|
describe 'render tag' do
|
16
15
|
it 'renders a simple snippet' do
|
17
16
|
template = "{% render 'simple', name: 'World' %}"
|
18
|
-
expect(
|
17
|
+
expect(template).to render_liquid_template('Hello, World!')
|
19
18
|
end
|
20
19
|
|
21
20
|
it 'renders a snippet with a for loop' do
|
22
21
|
template = "{% render 'for_loop' for items as item %}"
|
23
22
|
assigns = { 'items' => %w[A B C] }
|
24
|
-
expect(
|
23
|
+
expect(template).to render_liquid_template('Item: AItem: BItem: C').with(assigns)
|
25
24
|
end
|
26
25
|
|
27
26
|
it 'renders a snippet with an object' do
|
28
27
|
template = "{% render 'with_object' with user as object %}"
|
29
28
|
assigns = { 'user' => { 'name' => 'John' } }
|
30
|
-
expect(
|
29
|
+
expect(template).to render_liquid_template('Name: John').with(assigns)
|
31
30
|
end
|
32
31
|
|
33
32
|
it 'does not allow access to variables outside the snippet' do
|
34
33
|
ShopifyLiquidTestHelper.register_snippet('isolated', '{{ outside_var }}')
|
35
34
|
template = "{% assign outside_var = 'Outside' %}{% render 'isolated' %}"
|
36
|
-
expect(
|
35
|
+
expect(template).to render_liquid_template('').with('outside_var' => 'Outside')
|
37
36
|
end
|
38
37
|
|
39
38
|
it 'provides all forloop variables in for loop rendering' do
|
@@ -41,35 +40,18 @@ RSpec.describe ShopifyLiquidTestHelper::RenderTag do
|
|
41
40
|
'{{ forloop.index }},{{ forloop.index0 }},{{ forloop.first }},{{ forloop.last }},{{ forloop.length }},{{ forloop.rindex }},{{ forloop.rindex0 }}|')
|
42
41
|
template = "{% render 'forloop_vars' for items as item %}"
|
43
42
|
assigns = { 'items' => %w[A B C] }
|
44
|
-
expect(
|
43
|
+
expect(template).to render_liquid_template('1,0,true,false,3,3,2|2,1,false,false,3,2,1|3,2,false,true,3,1,0|').with(assigns)
|
45
44
|
end
|
46
45
|
|
47
46
|
it 'allows using an alias for the rendered variable' do
|
48
47
|
template = "{% render 'simple' with 'Alias' as name %}"
|
49
|
-
expect(
|
48
|
+
expect(template).to render_liquid_template('Hello, Alias!')
|
50
49
|
end
|
51
50
|
|
52
51
|
it 'does not pollute the outer scope' do
|
53
52
|
template = "{% render 'simple' with 'Inner' as name %}{{ name }}"
|
54
53
|
assigns = { 'name' => 'Outer' }
|
55
|
-
expect(
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
describe 'capture tag' do
|
60
|
-
it 'captures content into a variable' do
|
61
|
-
template = "{% capture my_variable %}Hello, Capture!{% endcapture %}{{ my_variable }}"
|
62
|
-
expect(render(template)).to eq 'Hello, Capture!'
|
63
|
-
end
|
64
|
-
|
65
|
-
it 'captures complex content with Liquid logic' do
|
66
|
-
template = "{% capture complex %}{% for i in (1..3) %}{{ i }}{% endfor %}{% endcapture %}{{ complex }}"
|
67
|
-
expect(render(template)).to eq '123'
|
68
|
-
end
|
69
|
-
|
70
|
-
it 'overwrites previously captured variables' do
|
71
|
-
template = "{% capture var %}First{% endcapture %}{% capture var %}Second{% endcapture %}{{ var }}"
|
72
|
-
expect(render(template)).to eq 'Second'
|
54
|
+
expect(template).to render_liquid_template('Hello, Inner!Outer').with(assigns)
|
73
55
|
end
|
74
56
|
end
|
75
57
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'shopify_liquid_test_helper'
|
2
2
|
|
3
|
-
RSpec.configure do |config|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
end
|
3
|
+
# RSpec.configure do |config|
|
4
|
+
# config.before(:all) do
|
5
|
+
# ShopifyLiquidTestHelper.register_custom_tags
|
6
|
+
# end
|
7
|
+
# end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shopify_liquid_test_helper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ken Takagiwa
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-08-
|
11
|
+
date: 2024-08-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: liquid
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '5.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: shopify_liquid_simulator
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.1.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.1.0
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: rspec
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -63,11 +77,13 @@ files:
|
|
63
77
|
- README.md
|
64
78
|
- Rakefile
|
65
79
|
- lib/shopify_liquid_test_helper.rb
|
66
|
-
- lib/shopify_liquid_test_helper/
|
67
|
-
- lib/shopify_liquid_test_helper/
|
68
|
-
-
|
80
|
+
- lib/shopify_liquid_test_helper/integration.rb
|
81
|
+
- lib/shopify_liquid_test_helper/matchers.rb
|
82
|
+
- lib/shopify_liquid_test_helper/rspec_configuration.rb
|
83
|
+
- lib/shopify_liquid_test_helper/test_helpers.rb
|
84
|
+
- spec/shopify_liquid_test_helper_spec.rb
|
69
85
|
- spec/spec_helper.rb
|
70
|
-
homepage: https://github.com/
|
86
|
+
homepage: https://github.com/giwa/shopify_liquid_test_helper
|
71
87
|
licenses:
|
72
88
|
- MIT
|
73
89
|
metadata: {}
|
@@ -1,14 +0,0 @@
|
|
1
|
-
module ShopifyLiquidTestHelper
|
2
|
-
class CaptureTag < Liquid::Block
|
3
|
-
def initialize(tag_name, markup, tokens)
|
4
|
-
super
|
5
|
-
@variable_name = markup.strip
|
6
|
-
end
|
7
|
-
|
8
|
-
def render(context)
|
9
|
-
result = super
|
10
|
-
context.scopes.last[@variable_name] = result
|
11
|
-
''
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
@@ -1,107 +0,0 @@
|
|
1
|
-
module ShopifyLiquidTestHelper
|
2
|
-
class RenderTag < Liquid::Tag
|
3
|
-
SYNTAX = /(#{Liquid::QuotedFragment}+)(\s+(?:with|for)\s+(#{Liquid::QuotedFragment}+))?(\s+as\s+(#{Liquid::QuotedFragment}+))?/o
|
4
|
-
|
5
|
-
def initialize(tag_name, markup, tokens)
|
6
|
-
super
|
7
|
-
parse_markup(markup)
|
8
|
-
@params = extract_params(markup)
|
9
|
-
end
|
10
|
-
|
11
|
-
def render(context)
|
12
|
-
snippet_name = resolve_snippet_name(context)
|
13
|
-
snippet = fetch_snippet(snippet_name)
|
14
|
-
|
15
|
-
temp_context = create_isolated_context(context)
|
16
|
-
variable = resolve_variable(context)
|
17
|
-
|
18
|
-
if @for_loop
|
19
|
-
render_for_loop(snippet, variable, temp_context)
|
20
|
-
else
|
21
|
-
render_with_variable(snippet, variable, temp_context)
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
private
|
26
|
-
|
27
|
-
def parse_markup(markup)
|
28
|
-
unless markup =~ SYNTAX
|
29
|
-
raise Liquid::SyntaxError,
|
30
|
-
"Syntax Error in 'render' - Valid syntax: render 'snippet' [with object|for array] [as alias]"
|
31
|
-
end
|
32
|
-
|
33
|
-
@snippet_name = ::Regexp.last_match(1)
|
34
|
-
@variable_name = ::Regexp.last_match(3)
|
35
|
-
@alias = ::Regexp.last_match(5)
|
36
|
-
@for_loop = ::Regexp.last_match(2) =~ /\s+for\s+/
|
37
|
-
end
|
38
|
-
|
39
|
-
def extract_params(markup)
|
40
|
-
params = {}
|
41
|
-
markup.scan(Liquid::TagAttributes) { |key, value| params[key] = value }
|
42
|
-
params
|
43
|
-
end
|
44
|
-
|
45
|
-
def resolve_snippet_name(context)
|
46
|
-
snippet_name = context[@snippet_name] || @snippet_name
|
47
|
-
snippet_name.gsub(/['"]/, '')
|
48
|
-
end
|
49
|
-
|
50
|
-
def fetch_snippet(snippet_name)
|
51
|
-
snippet = ShopifyLiquidTestHelper.get_snippet(snippet_name)
|
52
|
-
raise Liquid::SyntaxError, "Unknown snippet '#{snippet_name}'" unless snippet
|
53
|
-
|
54
|
-
snippet
|
55
|
-
end
|
56
|
-
|
57
|
-
def resolve_variable(context)
|
58
|
-
@variable_name ? context[@variable_name] : nil
|
59
|
-
end
|
60
|
-
|
61
|
-
def render_for_loop(snippet, array, context)
|
62
|
-
return unless array.respond_to?(:each)
|
63
|
-
|
64
|
-
array.each_with_index.map do |item, index|
|
65
|
-
item_context = create_item_context(context, item, index, array.size)
|
66
|
-
Liquid::Template.parse(snippet).render(item_context)
|
67
|
-
end.join
|
68
|
-
end
|
69
|
-
|
70
|
-
def create_item_context(context, item, index, array_size)
|
71
|
-
item_context = context.new_isolated_subcontext
|
72
|
-
item_context[@alias || 'item'] = item
|
73
|
-
|
74
|
-
item_context['forloop'] = {
|
75
|
-
'first' => index.zero?,
|
76
|
-
'index' => index + 1,
|
77
|
-
'index0' => index,
|
78
|
-
'last' => index == array_size - 1,
|
79
|
-
'length' => array_size,
|
80
|
-
'rindex' => array_size - index,
|
81
|
-
'rindex0' => array_size - index - 1
|
82
|
-
}
|
83
|
-
|
84
|
-
@params.each do |key, value|
|
85
|
-
item_context[key] = context[value] || context.evaluate(value) || value
|
86
|
-
end
|
87
|
-
|
88
|
-
item_context
|
89
|
-
end
|
90
|
-
|
91
|
-
def render_with_variable(snippet, variable, context)
|
92
|
-
context[@alias || 'object'] = variable if @variable_name
|
93
|
-
|
94
|
-
@params.each do |key, value|
|
95
|
-
context[key] = context[value] || context.evaluate(value) || value
|
96
|
-
end
|
97
|
-
|
98
|
-
Liquid::Template.parse(snippet).render(context)
|
99
|
-
end
|
100
|
-
|
101
|
-
def create_isolated_context(context)
|
102
|
-
new_context = context.new_isolated_subcontext
|
103
|
-
@params.each { |key, value| new_context[key] = context[value] || context.evaluate(value) || value }
|
104
|
-
new_context
|
105
|
-
end
|
106
|
-
end
|
107
|
-
end
|