class TokyoMetro::Factory::Generate::Api::MetaClass::Info::Fundamental

API から取得したハッシュからインスタンスを生成するための Factory Pattern のクラス(メタクラス)

Public Class Methods

instance_class() click to toggle source
# File lib/tokyo_metro/factory/generate/api/meta_class/info/fundamental.rb, line 39
def self.instance_class
  info_class
end
new( var , on_the_top_layer: true ) click to toggle source

Constructor @param var [Hash / Array / String] インスタンスの元となるハッシュ,配列,文字列 @note ハッシュは第1階層の情報であるとは限らない。

# File lib/tokyo_metro/factory/generate/api/meta_class/info/fundamental.rb, line 7
def initialize( var , on_the_top_layer: true )
  @on_the_top_layer = on_the_top_layer
  if to_check_validity? and var.instance_of?( ::Hash )
    check_validity( var )
  end
  if var.instance_of?( ::Hash )
    @hash = var
  elsif var.instance_of?( ::Array )
    @array = var
  elsif var.instance_of?( ::String )
    @string = var
  end
end
process(h) click to toggle source

API から取得したハッシュからインスタンスを生成するためのクラスメソッド @param h [Hash] インスタンスの元となるハッシュ @note ハッシュは第1階層の情報であるとは限らない。

# File lib/tokyo_metro/factory/generate/api/meta_class/info/fundamental.rb, line 35
def self.process(h)
  self.new(h).generate
end

Public Instance Methods

generate() click to toggle source

API から取得したハッシュからインスタンスを生成するためのインスタンスメソッド @note ハッシュは第1階層の情報であるとは限らない。 @return [Object] self.class.info_class のインスタンス

# File lib/tokyo_metro/factory/generate/api/meta_class/info/fundamental.rb, line 24
def generate
  self.class.instance_class.new( *variables )
end
to_check_validity?() click to toggle source
# File lib/tokyo_metro/factory/generate/api/meta_class/info/fundamental.rb, line 28
def to_check_validity?
  @on_the_top_layer
end

Private Instance Methods

check_validity( h , barrier_free: false ) click to toggle source

API から取得したデータをもとにインスタンスを作成する際に、RDF タイプ、 Context などが正しいか否かをチェックするメソッド (1) @param h [Hash] API から取得したデータのハッシュ @return [nil]

# File lib/tokyo_metro/factory/generate/api/meta_class/info/fundamental.rb, line 55
def check_validity( h , barrier_free: false )
  if barrier_free
    ::TokyoMetro::Factory::Generate::Api::MetaClass::Info::Fundamental::ValidityChecker::BarrierFree.process( h , self.class )
  else
    ::TokyoMetro::Factory::Generate::Api::MetaClass::Info::Fundamental::ValidityChecker::Normal.process( h , self.class )
  end
end
variables() click to toggle source

Info クラスに送る変数のリスト @return [::Array] @raise [RuntimeError] サブクラスで定義するため、このクラスでは例外が発生するようにしている。

# File lib/tokyo_metro/factory/generate/api/meta_class/info/fundamental.rb, line 48
def variables
  raise "The class method \"#{__method__}\" is not defined yet in this class."
end