class RakutenWebService::Travel::AreaClass::Base

Attributes

children[R]
parent[R]

Public Class Methods

[](area_code) click to toggle source
# File lib/rakuten_web_service/travel/area_class.rb, line 47
def [](area_code)
  AreaClass.search.first unless repository[area_level][area_code]
  repository[area_level][area_code]
end
area_classes() click to toggle source
# File lib/rakuten_web_service/travel/area_class.rb, line 30
def area_classes
  @@area_classes ||= {}
end
inherited(klass) click to toggle source
# File lib/rakuten_web_service/travel/area_class.rb, line 34
def inherited(klass)
  class_name = klass.to_s.split('::').last
  area_level = class_name.to_s[/\A(\w*)Class\Z/, 1].downcase
  class << klass
    attr_reader :area_level
  end
  klass.instance_variable_set(:@area_level, area_level)

  area_classes[klass.area_level] = klass

  klass.attribute :"#{area_level}ClassCode", :"#{area_level}ClassName"
end
new(*args) click to toggle source
Calls superclass method RakutenWebService::Resource::new
# File lib/rakuten_web_service/travel/area_class.rb, line 52
def new(*args)
  obj = super
  repository[area_level][obj.class_code] = obj
  obj
end
new(class_data, parent = nil) click to toggle source
# File lib/rakuten_web_service/travel/area_class.rb, line 65
def initialize(class_data, parent = nil)
  @parent = parent
  case class_data
  when Array
    @params = class_data.shift
    @children = class_data.shift
  when Hash
    @params = class_data
    @children = nil
  end
  parse_children_attributes
end
repository() click to toggle source
# File lib/rakuten_web_service/travel/area_class.rb, line 58
def repository
  @@repository ||= Hash.new { |h, k| h[k] = {} }
end

Public Instance Methods

area_level() click to toggle source
# File lib/rakuten_web_service/travel/area_class.rb, line 78
def area_level
  self.class.area_level
end
class_code() click to toggle source
# File lib/rakuten_web_service/travel/area_class.rb, line 82
def class_code
  self["#{area_level}ClassCode"]
end
class_name() click to toggle source
# File lib/rakuten_web_service/travel/area_class.rb, line 86
def class_name
  self["#{area_level}ClassName"]
end
to_query() click to toggle source
# File lib/rakuten_web_service/travel/area_class.rb, line 90
def to_query
  query = { "#{area_level}ClassCode" => class_code }
  query = query.merge(parent.to_query) unless parent.nil?
  query
end

Private Instance Methods

parse_children_attributes() click to toggle source
# File lib/rakuten_web_service/travel/area_class.rb, line 104
def parse_children_attributes
  return @children = [] if children.nil? || children.empty?

  children_class = children.keys.first[/\A(\w*)Classes\Z/, 1]
  class_name = "#{children_class}Classes"
  params[class_name] = children[class_name].map do |child_data|
    Base.area_classes[children_class].new(child_data["#{children_class}Class"], self)
  end
  @children = params[class_name]
end