| 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