class Arrays::ArrayDeleteTag

Public Instance Methods

parse(tokens) click to toggle source
Calls superclass method
# 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) click to toggle source
# 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