Class: Arrays::ArrayDeleteTag
- Inherits:
-
ArrayTag
- Object
- Liquid::Tag
- ArrayTag
- Arrays::ArrayDeleteTag
show all
- Defined in:
- lib/liquid-arrays/array_delete_tag.rb
Instance Method Summary
collapse
Methods inherited from ArrayTag
#get_array, #out_of_bounds?
Instance Method Details
#parse(tokens) ⇒ Object
3
4
5
6
7
8
9
10
11
12
13
14
15
|
# File 'lib/liquid-arrays/array_delete_tag.rb', line 3
def parse(tokens)
super
parser = AttributeParser.new(@parse_context, @markup)
@array_name = parser.consume_attribute('array', :id)
@value = parser.consume_attribute('value')
@index = parser.consume_attribute('index', :integer)
parser.finish
if @value.nil? && @index.nil?
raise Liquid::ArgumentError, 'no value or index specified'
elsif !@value.nil? && !@index.nil?
raise Liquid::ArgumentError, 'only value or index can be specified'
end
end
|
#render(context) ⇒ Object
17
18
19
20
21
22
23
24
25
26
27
28
|
# File 'lib/liquid-arrays/array_delete_tag.rb', line 17
def render(context)
array = get_array(context, false)
unless array.nil?
if @index.nil?
array.delete(@value.render(context))
else
index = @index.render(context)
array.delete_at(index) if index.is_a?(Integer) && !out_of_bounds?(array, index)
end
end
''
end
|