def map(input, property)
      InputIterator.new(input).map do |e|
        e = e.call if e.is_a?(Proc)

        if property == "to_liquid".freeze
          e
        elsif e.respond_to?(:[])
          r = e[property]
          r.is_a?(Proc) ? r.call : r
        end
      end
    rescue TypeError
      raise_property_error(property)
    end
def map(input, property)
      InputIterator.new(input).map do |e|
        e = e.call if e.is_a?(Proc)

        if property == "to_liquid".freeze
          e
        elsif e.respond_to?(:[])
          r = e[property]
          r.is_a?(Proc) ? r.call : r
        end
      end
    rescue TypeError
      raise_property_error(property)
    end
map/collect on a given property