Class: Arrays::ArrayDeleteTag
- Inherits:
-
Liquid::Tag
- Object
- Liquid::Tag
- Arrays::ArrayDeleteTag
- Includes:
- ErrorHandler
- Defined in:
- lib/liquid-arrays/array_delete_tag.rb
Instance Method Summary collapse
Methods included from ErrorHandler
Instance Method Details
#parse(tokens) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/liquid-arrays/array_delete_tag.rb', line 5 def parse(tokens) super catch do 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::SyntaxError, 'no value or index specified' elsif !@value.nil? && !@index.nil? raise Liquid::SyntaxError, 'only value or index can be specified' end end end |
#render(context) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/liquid-arrays/array_delete_tag.rb', line 21 def render(context) array = ArrayHelper.get_array(context, @array_name, false) unless array.nil? if @index.nil? array.delete(@value.render(context)) else index = @index.render(context) if index.is_a?(Integer) && index >= 0 && index < array.length array.delete_at(index) end end end '' end |