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