Class: TokyoMetro::Factory::Generate::Api::MetaClass::List::Normal

Inherits:
Object
  • Object
show all
Defined in:
lib/tokyo_metro/factory/generate/api/meta_class/list/normal.rb

Overview

保存済みの情報を処理する Factory Pattern のクラス

生成するクラスの情報 collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(file_type, db_dirname, db_dirname_sub) ⇒ Normal

Constructor

Parameters:

  • file_type (String (filename))

    ファイルの名称

  • db_dirname (String (dirname))

    データが格納されているディレクトリの名称

  • db_dirname_sub (String (dirname) or nil)

    データが格納されているサブディレクトリの名称



8
9
10
11
12
# File 'lib/tokyo_metro/factory/generate/api/meta_class/list/normal.rb', line 8

def initialize( file_type , db_dirname , db_dirname_sub )
  @file_type = file_type
  @db_dirname = db_dirname
  @db_dirname_sub = db_dirname_sub
end

Class Method Details

.info_classConst (class)

配列の要素となるインスタンスのクラス

Returns:

  • (Const (class))


72
73
74
# File 'lib/tokyo_metro/factory/generate/api/meta_class/list/normal.rb', line 72

def self.info_class
  raise "The class method \"#{__method__}\" is not defined yet in this class \"#{ self.name }\"."
end

.list_classConst (class)

配列のクラス

Returns:

  • (Const (class))


66
67
68
# File 'lib/tokyo_metro/factory/generate/api/meta_class/list/normal.rb', line 66

def self.list_class
  raise "The class method \"#{__method__}\" is not defined yet in this class \"#{ self.name }\"."
end

.process(file_type, db_dirname, db_dirname_sub, max) ⇒ subclass of TokyoMetro::Api::MetaClass::Fundamental::List

Note:

max を nil とした場合は無制限で、すべての情報を配列に格納する。

保存済みの情報からインスタンスの配列を復元するメソッド(クラスメソッド)

Parameters:

  • file_type (String (filename))

    ファイルの名称

  • db_dirname (String (dirname))

    データが格納されているディレクトリの名称

  • db_dirname_sub (String (dirname) or nil)

    データが格納されているサブディレクトリの名称

  • max (Integer or nil)

    配列の要素の最大値

Returns:



58
59
60
# File 'lib/tokyo_metro/factory/generate/api/meta_class/list/normal.rb', line 58

def self.process( file_type , db_dirname , db_dirname_sub , max )
  self.new( file_type , db_dirname , db_dirname_sub ).generate( max )
end

Instance Method Details

#filename_list(max = nil) ⇒ ::Array

Note:

max を nil とした場合は無制限で、すべてのファイルを配列に格納する。

ファイルのリスト

Parameters:

  • max (Integer or nil) (defaults to: nil)

    配列の要素の最大値

Returns:

  • (::Array)


18
19
20
21
22
23
24
25
26
# File 'lib/tokyo_metro/factory/generate/api/meta_class/list/normal.rb', line 18

def filename_list( max = nil )
  # @todo 遅延評価
  files = ::Dir.glob( self.filename_wildcard )
  if max.integer?
    files = files.first( max )
  end
  inspect_info_of_generating_filename_list( files )
  files
end

#filename_wildcardString

取得するファイルを表すワイルドカード

Returns:

  • (String)


30
31
32
# File 'lib/tokyo_metro/factory/generate/api/meta_class/list/normal.rb', line 30

def filename_wildcard
  "#{ db_dirname }/**.#{ @file_type.to_s }"
end

#generate(max = nil) ⇒ subclass of TokyoMetro::Api::MetaClass::Fundamental::List

Note:

max を nil とした場合は無制限で、すべてのファイルを配列に格納する。

保存済みの情報からインスタンスの配列を復元するメソッド(インスタンスメソッド)

Parameters:

  • max (Integer or nil) (defaults to: nil)

    配列の要素の最大値

Returns:



38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/tokyo_metro/factory/generate/api/meta_class/list/normal.rb', line 38

def generate( max = nil )
  ary_new = self.class.list_class.new
  files = self.filename_list( max )
  files.each.with_index(1) do | filename , i |
    infos_in_a_file = open_and_process_a_file( filename )
    infos_in_a_file.each do | info |
      ary_new << info
    end
    inspect_info_of_generation(i)
  end
  ary_new
end