class ApiSpec::APIObject

Attributes

nested_adder_name[RW]
nested_class[RW]
nested_name[RW]

Public Class Methods

init(base) click to toggle source
# File lib/api_spec/lib/api_spec/generator.rb, line 34
def self.init(base)
  base.send(:attr_accessor, *base::JSON_NAMES.keys)
  base.send(:attr_accessor, base.nested_name) if base.nested_name
  base.send(:define_method, base.nested_adder_name) do |name, &block|
    obj = nested_class.new(name)
    block.call(obj)
    send(nested_name) << obj
  end if base.nested_adder_name
end
new(name) click to toggle source
# File lib/api_spec/lib/api_spec/generator.rb, line 15
def initialize(name)
  @name = name
  send("#{nested_name}=".to_sym, []) if nested_name
end

Public Instance Methods

nested_class() click to toggle source
# File lib/api_spec/lib/api_spec/generator.rb, line 11
def nested_class
  self.class.nested_class
end
nested_name() click to toggle source
# File lib/api_spec/lib/api_spec/generator.rb, line 7
def nested_name
  self.class.nested_name
end
to_hash() click to toggle source
# File lib/api_spec/lib/api_spec/generator.rb, line 20
def to_hash
  pairs = self.class::JSON_NAMES.map do |name, json_name|
    [json_name, send(name)]
  end

  hash = Hash[pairs]

  if nested_name
    hash[nested_name.to_s] = send(nested_name).map { |obj| obj.to_hash }
  end

  hash
end