module TokyoMetro::Document::Gviz::DirGraph

ファイルの階層図を生成するためのモジュール

Public Class Methods

process( dot_files: true , db_dot_files: true ) click to toggle source

処理を行うメソッド @param dot_files [Boolean] .dot ファイルの生成を行うか否かの設定 @return [nil]

# File lib/tokyo_metro/document/gviz/dir_graph.rb, line 7
def self.process( dot_files: true , db_dot_files: true )
  if dot_files
    make_dot_files
  end
  if db_dot_files
    make_db_dot_files
  end
  return nil
end

Private Class Methods

make_db_dot_files() click to toggle source

.dot ファイル(ディレクトリ “db” )を生成するメソッド @return [nil]

# File lib/tokyo_metro/document/gviz/dir_graph.rb, line 34
def make_db_dot_files
  Dir.chdir( ::TokyoMetro::GEM_DB_DIR ) do
    dirs = [
      "csv" , "dictionary" , "fare" , "point" , "passenger_survey" , "railway_line" ,
      "station" , "station_facility" , "station_timetable" , "train_operation_info" , "train_location" , "train_timetable"
    ]
    exceptions = [ "fare" , "train_operation_info" , "train_location" , "train_timetable" ]
    ( dirs - exceptions ).each do | db_dirname |
      make_dot_by_dir_friend( db_dirname , add_db: true )
    end
  end
  return nil
end
make_dot_by_dir_friend( dirname , add_db: false ) click to toggle source
# File lib/tokyo_metro/document/gviz/dir_graph.rb, line 48
def make_dot_by_dir_friend( dirname , add_db: false )
  default_dot_filename = "a.dot"
  FileUtils.mkdir_p( ::TokyoMetro::Document::Gviz::DIR )

  system( "dir_friend dot #{dirname} -c blues --dir_shape box --file_shape box -g \"splines:ortho\"" )

  if add_db
    filename_new = "db_#{dirname}"
  elsif dirname == "ruby"
    filename_new = "ruby_files"
  elsif dirname == "lib"
    filename_new = "ruby_lib"
  else
    filename_new = dirname
  end
  File.rename( default_dot_filename , "#{ ::TokyoMetro::Document::Gviz::DIR }/#{filename_new}.dot" )
end
make_dot_files() click to toggle source

.dot ファイル(ディレクトリ “ruby” と “public” )を生成するメソッド @return [nil]

# File lib/tokyo_metro/document/gviz/dir_graph.rb, line 23
def make_dot_files
  Dir.chdir( ::Rails.root ) do
    [ "app" , "lib" ].each do | dirname |
      make_dot_by_dir_friend( dirname )
    end
  end
  return nil
end