Class | Fortran90Dependency |
In: |
f90depend.rb
|
Parent: | Object |
# File f90depend.rb, line 20 20: def initialize(quiet=nil, verbose=nil, strictly=nil) 21: @entries = [] 22: @quiet = quiet 23: @verbose = verbose 24: @strictly = strictly 25: @progress = $stderr unless quiet 26: end
探査するファイルを追加する. 引数 files には Fortran90/95 ファイル名を与える. ファイルが存在しない場合, エラーを返す.
# File f90depend.rb, line 33 33: def add_files(*files) 34: files.flatten! 35: progress " Adding " 36: files.each{|file| 37: progress "\n #{file}", '.' 38: entry = Fortran90DependencyEntry.new(file, @strictly) 39: progress "\n Modules: ", '' 40: entry.modules.each{ |m| 41: progress "\n #{m}", '' 42: } 43: progress "\n Uses: ", '' 44: entry.uses.each{ |u| 45: progress "\n #{u}", '' 46: } 47: @entries << entry if entry.modules 48: } 49: progress "\n" 50: @entries 51: end
探査するファイルリストから, ファイルを削除する. 引数 files には Fortran90/95 ファイル名を与える.
# File f90depend.rb, line 57 57: def del_files(*files) 58: files.flatten! 59: progress " Deleting " 60: files.each{|file| 61: @entries.collect!{|entry| 62: if File.expand_path(file) == File.expand_path(entry.file) 63: progress "\n #{file}", '.' 64: next nil 65: else 66: next entry 67: end 68: } 69: @entries.delete_if{|entry| !entry } 70: } 71: progress "\n" 72: @entries 73: end
依存関係リストを作成する
# File f90depend.rb, line 78 78: def gen_list 79: dep_list = [] 80: progress " Generating " 81: @entries.each{|entry| 82: progress "." 83: dep_line = entry.file.sub(/\.f9(0|5)$/i, '.o') + ': ' 84: entry.uses.each{|use_item| 85: @entries.each{|checked_entry| 86: if checked_entry.modules.include?(use_item) 87: dep_line << checked_entry.file.sub(/\.f9(0|5)$/i, '.o') + ' ' 88: break 89: end 90: } 91: } 92: dep_list << dep_line 93: } 94: progress "\n" 95: dep_list.join("\n") 96: end
引数 char に与えられたメッセージを表示する. @quiet が true の場合は何も表示しない. 第 2 引数 clipto に String クラスが与えられ, 且つ @varbose が true ではない場合, char に与えられた文字列は clipto に置き換えられます.
# File f90depend.rb, line 107 107: def progress(char, clipto=nil) 108: unless @quiet 109: char = clipto if clipto && !(@verbose) && clipto.class.to_s == 'String' 110: @progress.print(char) 111: @progress.flush 112: end 113: end