class TokyoMetro::Factory::Generate::Api::MetaClass::Info::ConvertAndSetArrayData::FactoryClass

配列のデータを JSON のハッシュから変換するための Factory Pattern のクラス

Public Class Methods

new( data_from_hash , list_class , info_class , to_flatten ) click to toggle source
# File lib/tokyo_metro/factory/generate/api/meta_class/info/convert_and_set_array_data/factory_class.rb, line 4
def initialize( data_from_hash , list_class , info_class , to_flatten )
  if generate_info_instance and info_class.nil?
    raise "Error"
  end
  @info_list = set_info_list( data_from_hash , to_flatten )

  @list_class = set_list_class( list_class )
  @info_class = info_class
end
process( data_from_hash , list_class , info_class , to_flatten ) click to toggle source
# File lib/tokyo_metro/factory/generate/api/meta_class/info/convert_and_set_array_data/factory_class.rb, line 29
def self.process( data_from_hash , list_class , info_class , to_flatten )
  self.new( data_from_hash , list_class , info_class , to_flatten ).generate
end

Public Instance Methods

generate() click to toggle source
# File lib/tokyo_metro/factory/generate/api/meta_class/info/convert_and_set_array_data/factory_class.rb, line 14
def generate
  #puts @info_class.name
  #puts ""
  if generate_info_instance
    # inspect_info_of_list
    ary_new = @list_class.new
    @info_list.each do | info |
      ary_new << @info_class.generate_from_hash( info )
    end
    ary_new
  else
    @list_class.new( @info_list )
  end
end
generate_info_instance() click to toggle source
# File lib/tokyo_metro/factory/generate/api/meta_class/info/convert_and_set_array_data/factory_class.rb, line 33
def generate_info_instance
  @info_class.present?
end

Private Instance Methods

inspect_info_of_list() click to toggle source
# File lib/tokyo_metro/factory/generate/api/meta_class/info/convert_and_set_array_data/factory_class.rb, line 68
def inspect_info_of_list
  puts "---- Array: #{ @list_class.name }"
  puts "---- Info: #{ @info_class.name }"
  puts "---- Value: #{ @info_list.class.name }"
end
inspect_info_of_two_dimensional_array( ary ) click to toggle source
# File lib/tokyo_metro/factory/generate/api/meta_class/info/convert_and_set_array_data/factory_class.rb, line 55
def inspect_info_of_two_dimensional_array( ary )
  inspect_ary = ary.map { | element |
    if element.instance_of?( ::Array )
      "::Array (#{ element.length })"
    else
      element.length
    end
  }
  puts "○ Two Dimensional Array (length: #{ ary.length })"
  puts inspect_ary.to_s
  puts "" * 2
end
set_info_list( data_from_hash , to_flatten ) click to toggle source
# File lib/tokyo_metro/factory/generate/api/meta_class/info/convert_and_set_array_data/factory_class.rb, line 39
def set_info_list( data_from_hash , to_flatten )
  ary = data_from_hash.with_default_value( ::Array.new )
  if to_flatten and ary.instance_of?( ::Array )
    # 配列の要素に配列が存在する場合(≒2次元配列の場合)
    if ary.any? { | element | element.instance_of?( ::Array ) }
      inspect_info_of_two_dimensional_array( ary )
    end
    ary = ary.flatten
  end
  return ary
end
set_list_class( list_class ) click to toggle source
# File lib/tokyo_metro/factory/generate/api/meta_class/info/convert_and_set_array_data/factory_class.rb, line 51
def set_list_class( list_class )
  list_class.with_default_value( ::Array )
end