class Eve::API::Response::Row

Attributes

fields[R]
rowsets[R]

Public Class Methods

new(row, columns = row.attribute_nodes.collect { |c| c.name }) click to toggle source
# File lib/eve/api/response/row.rb, line 6
def initialize(row, columns = row.attribute_nodes.collect { |c| c.name })
  @rowsets = []

  # @fields = row.attributes.keys.collect { |f| f.underscore }
  @fields = columns.collect { |c| c.underscore }

  # pre-emptively define all known columns to return nil
  klass = (class << self; self; end)
  columns.each { |c| klass.send(:define_method, c.underscore) { nil } }

  row.attribute_nodes.each_with_index do |attr, i|
    name = columns[i]
    if name.nil?
      name = attr.name
      @fields << name.underscore
    end
    value = literal_value_for attr.value

    klass.module_eval do
      define_method name.underscore do
        value
      end

      alias_method name, name.underscore
    end
  end

  parse_children row
end

Public Instance Methods

inspect() click to toggle source
# File lib/eve/api/response/row.rb, line 36
def inspect
  "<Row " +
  fields.map do |field_name|
    "#{field_name}: #{send field_name}"
  end.join(', ') + ">"
end