Class Fortran90Dependency
In: f90depend.rb
Parent: Object

Methods

add_files   del_files   gen_list   new   progress  

Classes and Modules

Class Fortran90Dependency::Fortran90DependencyEntry

Public Class methods

[Source]

    # 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

Public Instance methods

探査するファイルを追加する. 引数 files には Fortran90/95 ファイル名を与える. ファイルが存在しない場合, エラーを返す.

[Source]

    # 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 ファイル名を与える.

[Source]

    # 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

依存関係リストを作成する

[Source]

    # 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 に置き換えられます.

[Source]

     # 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

[Validate]