fUnit 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. data/{LICENSE → COPYING} +21 -21
  2. data/README +26 -2
  3. data/Rakefile +97 -0
  4. data/docs/html/classes/Funit.html +390 -0
  5. data/docs/html/classes/Funit/Assertions.html +285 -0
  6. data/docs/html/classes/Funit/Compiler.html +160 -0
  7. data/docs/html/classes/Funit/Depend.html +441 -0
  8. data/docs/html/classes/Funit/TestSuite.html +417 -0
  9. data/docs/html/created.rid +1 -0
  10. data/docs/html/files/COPYING.html +563 -0
  11. data/docs/html/files/README.html +151 -0
  12. data/docs/html/files/lib/funit/assertions_rb.html +101 -0
  13. data/docs/html/files/lib/funit/fortran_deps_rb.html +107 -0
  14. data/docs/html/files/lib/funit/functions_rb.html +101 -0
  15. data/docs/html/files/lib/funit/test_suite_rb.html +101 -0
  16. data/docs/html/files/lib/funit_rb.html +111 -0
  17. data/docs/html/fr_class_index.html +31 -0
  18. data/docs/html/fr_file_index.html +33 -0
  19. data/docs/html/fr_method_index.html +59 -0
  20. data/docs/html/index.html +24 -0
  21. data/docs/html/rdoc-style.css +208 -0
  22. data/examples/CFD/FluxFunctions.f90 +35 -0
  23. data/examples/CFD/FluxFunctionsMT.f90 +336 -0
  24. data/examples/CFD/FluxFunctionsMT.ftk +49 -0
  25. data/examples/CFD/Gammas.f90 +8 -0
  26. data/examples/CFD/GasModel.f90 +17 -0
  27. data/examples/CFD/GasModelMT.f90 +173 -0
  28. data/examples/CFD/GasModelMT.ftk +22 -0
  29. data/examples/CFD/TestRunner +0 -0
  30. data/examples/CFD/TestRunner.f90 +23 -0
  31. data/examples/CFD/fluxfunctions.mod +45 -0
  32. data/examples/CFD/gammas.mod +20 -0
  33. data/examples/CFD/gasmodel.mod +30 -0
  34. data/examples/CFD/gasmodelmt.mod +27 -0
  35. data/examples/StopWatch/StopWatch.f90 +50 -0
  36. data/examples/StopWatch/StopWatchMT.f90 +343 -0
  37. data/examples/StopWatch/StopWatchMT.ftk +73 -0
  38. data/examples/StopWatch/TestRunner +0 -0
  39. data/examples/StopWatch/TestRunner.f90 +23 -0
  40. data/examples/StopWatch/stopwatch.mod +34 -0
  41. data/examples/StopWatch/stopwatchmt.mod +27 -0
  42. data/lib/funit.rb +1 -6
  43. data/lib/funit/fortran_deps.rb +112 -0
  44. data/lib/funit/functions.rb +2 -5
  45. data/tests/tc_fortran_deps.rb +2 -2
  46. metadata +73 -22
  47. data/INSTALL +0 -19
  48. data/lib/fortran_deps.rb +0 -109
@@ -0,0 +1,285 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Module: Funit::Assertions</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Module</strong></td>
53
+ <td class="class-name-in-header">Funit::Assertions</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../../files/lib/funit/assertions_rb.html">
59
+ lib/funit/assertions.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ </table>
66
+ </div>
67
+ <!-- banner header -->
68
+
69
+ <div id="bodyContent">
70
+
71
+
72
+
73
+ <div id="contextContent">
74
+
75
+
76
+
77
+ </div>
78
+
79
+ <div id="method-list">
80
+ <h3 class="section-bar">Methods</h3>
81
+
82
+ <div class="name-list">
83
+ <a href="#M000013">isequal</a>&nbsp;&nbsp;
84
+ <a href="#M000012">isequalwithin</a>&nbsp;&nbsp;
85
+ <a href="#M000010">isfalse</a>&nbsp;&nbsp;
86
+ <a href="#M000011">isrealequal</a>&nbsp;&nbsp;
87
+ <a href="#M000009">istrue</a>&nbsp;&nbsp;
88
+ <a href="#M000014">writeAssert</a>&nbsp;&nbsp;
89
+ </div>
90
+ </div>
91
+
92
+ </div>
93
+
94
+
95
+ <!-- if includes -->
96
+
97
+ <div id="section">
98
+
99
+
100
+
101
+
102
+
103
+
104
+
105
+
106
+ <!-- if method_list -->
107
+ <div id="methods">
108
+ <h3 class="section-bar">Public Instance methods</h3>
109
+
110
+ <div id="method-M000013" class="method-detail">
111
+ <a name="M000013"></a>
112
+
113
+ <div class="method-heading">
114
+ <a href="#M000013" class="method-signature">
115
+ <span class="method-name">isequal</span><span class="method-args">(line)</span>
116
+ </a>
117
+ </div>
118
+
119
+ <div class="method-description">
120
+ <p><a class="source-toggle" href="#"
121
+ onclick="toggleCode('M000013-source');return false;">[Source]</a></p>
122
+ <div class="method-source-code" id="M000013-source">
123
+ <pre>
124
+ <span class="ruby-comment cmt"># File lib/funit/assertions.rb, line 42</span>
125
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">isequal</span>(<span class="ruby-identifier">line</span>)
126
+ <span class="ruby-identifier">line</span><span class="ruby-operator">=~</span><span class="ruby-regexp re">/\((\w+\(.*\)|[^,]+),(.+)\)/</span>
127
+ <span class="ruby-ivar">@type</span> = <span class="ruby-value str">'IsEqual'</span>
128
+ <span class="ruby-ivar">@condition</span> = <span class="ruby-value str">&quot;.not.(#$1==#$2)&quot;</span>
129
+ <span class="ruby-ivar">@message</span> = <span class="ruby-value str">&quot;\&quot;#$1 (\&quot;,#$1,\&quot;) is not\&quot;, #$2&quot;</span>
130
+ <span class="ruby-identifier">syntaxError</span>(<span class="ruby-value str">&quot;invalid body for #@type&quot;</span>,<span class="ruby-ivar">@suiteName</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">$&amp;</span>
131
+ <span class="ruby-identifier">writeAssert</span>
132
+ <span class="ruby-keyword kw">end</span>
133
+ </pre>
134
+ </div>
135
+ </div>
136
+ </div>
137
+
138
+ <div id="method-M000012" class="method-detail">
139
+ <a name="M000012"></a>
140
+
141
+ <div class="method-heading">
142
+ <a href="#M000012" class="method-signature">
143
+ <span class="method-name">isequalwithin</span><span class="method-args">(line)</span>
144
+ </a>
145
+ </div>
146
+
147
+ <div class="method-description">
148
+ <p><a class="source-toggle" href="#"
149
+ onclick="toggleCode('M000012-source');return false;">[Source]</a></p>
150
+ <div class="method-source-code" id="M000012-source">
151
+ <pre>
152
+ <span class="ruby-comment cmt"># File lib/funit/assertions.rb, line 33</span>
153
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">isequalwithin</span>(<span class="ruby-identifier">line</span>)
154
+ <span class="ruby-identifier">line</span><span class="ruby-operator">=~</span><span class="ruby-regexp re">/\(([^,]+),(.+),(.+)\)/</span>
155
+ <span class="ruby-ivar">@type</span> = <span class="ruby-value str">'IsEqualWithin'</span>
156
+ <span class="ruby-ivar">@condition</span> = <span class="ruby-value str">&quot;.not.(#$2+#$3.ge.#$1 &amp;\n .and.#$2-#$3.le.#$1)&quot;</span>
157
+ <span class="ruby-ivar">@message</span> = <span class="ruby-value str">&quot;\&quot;#$1 (\&quot;,#$1,\&quot;) is not\&quot;,#$2,\&quot;within\&quot;,#$3&quot;</span>
158
+ <span class="ruby-identifier">syntaxError</span>(<span class="ruby-value str">&quot;invalid body for #@type&quot;</span>,<span class="ruby-ivar">@suiteName</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">$&amp;</span>
159
+ <span class="ruby-identifier">writeAssert</span>
160
+ <span class="ruby-keyword kw">end</span>
161
+ </pre>
162
+ </div>
163
+ </div>
164
+ </div>
165
+
166
+ <div id="method-M000010" class="method-detail">
167
+ <a name="M000010"></a>
168
+
169
+ <div class="method-heading">
170
+ <a href="#M000010" class="method-signature">
171
+ <span class="method-name">isfalse</span><span class="method-args">(line)</span>
172
+ </a>
173
+ </div>
174
+
175
+ <div class="method-description">
176
+ <p><a class="source-toggle" href="#"
177
+ onclick="toggleCode('M000010-source');return false;">[Source]</a></p>
178
+ <div class="method-source-code" id="M000010-source">
179
+ <pre>
180
+ <span class="ruby-comment cmt"># File lib/funit/assertions.rb, line 15</span>
181
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">isfalse</span>(<span class="ruby-identifier">line</span>)
182
+ <span class="ruby-identifier">line</span><span class="ruby-operator">=~</span><span class="ruby-regexp re">/\((.+)\)/</span>
183
+ <span class="ruby-ivar">@type</span> = <span class="ruby-value str">'IsFalse'</span>
184
+ <span class="ruby-ivar">@condition</span> = <span class="ruby-value str">&quot;#$1&quot;</span>
185
+ <span class="ruby-ivar">@message</span> = <span class="ruby-value str">&quot;\&quot;#$1 is not false\&quot;&quot;</span>
186
+ <span class="ruby-identifier">syntaxError</span>(<span class="ruby-value str">&quot;invalid body for #@type&quot;</span>,<span class="ruby-ivar">@suiteName</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">$1</span><span class="ruby-operator">=~</span><span class="ruby-regexp re">/\S+/</span>
187
+ <span class="ruby-identifier">writeAssert</span>
188
+ <span class="ruby-keyword kw">end</span>
189
+ </pre>
190
+ </div>
191
+ </div>
192
+ </div>
193
+
194
+ <div id="method-M000011" class="method-detail">
195
+ <a name="M000011"></a>
196
+
197
+ <div class="method-heading">
198
+ <a href="#M000011" class="method-signature">
199
+ <span class="method-name">isrealequal</span><span class="method-args">(line)</span>
200
+ </a>
201
+ </div>
202
+
203
+ <div class="method-description">
204
+ <p><a class="source-toggle" href="#"
205
+ onclick="toggleCode('M000011-source');return false;">[Source]</a></p>
206
+ <div class="method-source-code" id="M000011-source">
207
+ <pre>
208
+ <span class="ruby-comment cmt"># File lib/funit/assertions.rb, line 24</span>
209
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">isrealequal</span>(<span class="ruby-identifier">line</span>)
210
+ <span class="ruby-identifier">line</span><span class="ruby-operator">=~</span><span class="ruby-regexp re">/\(([^,]+),(.+)\)/</span>
211
+ <span class="ruby-ivar">@type</span> = <span class="ruby-value str">'IsRealEqual'</span>
212
+ <span class="ruby-ivar">@condition</span> = <span class="ruby-value str">&quot;.not.(#$1+2*spacing(real(#$1)).ge.#$2 &amp;\n .and.#$1-2*spacing(real(#$1)).le.#$2)&quot;</span>
213
+ <span class="ruby-ivar">@message</span> = <span class="ruby-value str">&quot;\&quot;#$2 (\&quot;,#$2,\&quot;) is not\&quot;,#$1,\&quot;within\&quot;,2*spacing(real(#$1))&quot;</span>
214
+ <span class="ruby-identifier">syntaxError</span>(<span class="ruby-value str">&quot;invalid body for #@type&quot;</span>,<span class="ruby-ivar">@suiteName</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">$&amp;</span>
215
+ <span class="ruby-identifier">writeAssert</span>
216
+ <span class="ruby-keyword kw">end</span>
217
+ </pre>
218
+ </div>
219
+ </div>
220
+ </div>
221
+
222
+ <div id="method-M000009" class="method-detail">
223
+ <a name="M000009"></a>
224
+
225
+ <div class="method-heading">
226
+ <a href="#M000009" class="method-signature">
227
+ <span class="method-name">istrue</span><span class="method-args">(line)</span>
228
+ </a>
229
+ </div>
230
+
231
+ <div class="method-description">
232
+ <p><a class="source-toggle" href="#"
233
+ onclick="toggleCode('M000009-source');return false;">[Source]</a></p>
234
+ <div class="method-source-code" id="M000009-source">
235
+ <pre>
236
+ <span class="ruby-comment cmt"># File lib/funit/assertions.rb, line 6</span>
237
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">istrue</span>(<span class="ruby-identifier">line</span>)
238
+ <span class="ruby-identifier">line</span><span class="ruby-operator">=~</span><span class="ruby-regexp re">/\((.+)\)/</span>
239
+ <span class="ruby-ivar">@type</span> = <span class="ruby-value str">'IsTrue'</span>
240
+ <span class="ruby-ivar">@condition</span> = <span class="ruby-value str">&quot;.not.(#$1)&quot;</span>
241
+ <span class="ruby-ivar">@message</span> = <span class="ruby-value str">&quot;\&quot;#$1 is not true\&quot;&quot;</span>
242
+ <span class="ruby-identifier">syntaxError</span>(<span class="ruby-value str">&quot;invalid body for #@type&quot;</span>,<span class="ruby-ivar">@suiteName</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">$1</span><span class="ruby-operator">=~</span><span class="ruby-regexp re">/\S+/</span>
243
+ <span class="ruby-identifier">writeAssert</span>
244
+ <span class="ruby-keyword kw">end</span>
245
+ </pre>
246
+ </div>
247
+ </div>
248
+ </div>
249
+
250
+ <div id="method-M000014" class="method-detail">
251
+ <a name="M000014"></a>
252
+
253
+ <div class="method-heading">
254
+ <a href="#M000014" class="method-signature">
255
+ <span class="method-name">writeAssert</span><span class="method-args">()</span>
256
+ </a>
257
+ </div>
258
+
259
+ <div class="method-description">
260
+ <p><a class="source-toggle" href="#"
261
+ onclick="toggleCode('M000014-source');return false;">[Source]</a></p>
262
+ <div class="method-source-code" id="M000014-source">
263
+ <pre>
264
+ <span class="ruby-comment cmt"># File lib/funit/assertions.rb, line 51</span>
265
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">writeAssert</span>
266
+ <span class="ruby-value str">&quot;\n! \#@type assertion\nnumAsserts = numAsserts + 1\nif (noAssertFailed) then\nif (\#@condition) then\nprint *, \&quot; *\#@type failed* in test \#@testName &amp;\n&amp;[\#{@suiteName}MT.ftk:\#{@lineNumber.to_s}]\&quot;\nprint *, \&quot; \&quot;, \#@message\nprint *, \&quot;\&quot;\nnoAssertFailed = .false.\nnumFailures = numFailures + 1\nelse\nnumAssertsTested = numAssertsTested + 1\nendif\nendif\n&quot;</span>
267
+ <span class="ruby-keyword kw">end</span>
268
+ </pre>
269
+ </div>
270
+ </div>
271
+ </div>
272
+
273
+
274
+ </div>
275
+
276
+
277
+ </div>
278
+
279
+
280
+ <div id="validator-badges">
281
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
282
+ </div>
283
+
284
+ </body>
285
+ </html>
@@ -0,0 +1,160 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Class: Funit::Compiler</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Class</strong></td>
53
+ <td class="class-name-in-header">Funit::Compiler</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../../files/lib/funit/functions_rb.html">
59
+ lib/funit/functions.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ <tr class="top-aligned-row">
66
+ <td><strong>Parent:</strong></td>
67
+ <td>
68
+ Object
69
+ </td>
70
+ </tr>
71
+ </table>
72
+ </div>
73
+ <!-- banner header -->
74
+
75
+ <div id="bodyContent">
76
+
77
+
78
+
79
+ <div id="contextContent">
80
+
81
+
82
+
83
+ </div>
84
+
85
+ <div id="method-list">
86
+ <h3 class="section-bar">Methods</h3>
87
+
88
+ <div class="name-list">
89
+ <a href="#M000025">new</a>&nbsp;&nbsp;
90
+ </div>
91
+ </div>
92
+
93
+ </div>
94
+
95
+
96
+ <!-- if includes -->
97
+
98
+ <div id="section">
99
+
100
+
101
+
102
+
103
+
104
+ <div id="attribute-list">
105
+ <h3 class="section-bar">Attributes</h3>
106
+
107
+ <div class="name-list">
108
+ <table>
109
+ <tr class="top-aligned-row context-row">
110
+ <td class="context-item-name">name</td>
111
+ <td class="context-item-value">&nbsp;[R]&nbsp;</td>
112
+ <td class="context-item-desc"></td>
113
+ </tr>
114
+ </table>
115
+ </div>
116
+ </div>
117
+
118
+
119
+
120
+ <!-- if method_list -->
121
+ <div id="methods">
122
+ <h3 class="section-bar">Public Class methods</h3>
123
+
124
+ <div id="method-M000025" class="method-detail">
125
+ <a name="M000025"></a>
126
+
127
+ <div class="method-heading">
128
+ <a href="#M000025" class="method-signature">
129
+ <span class="method-name">new</span><span class="method-args">( name=ENV['F9X'] )</span>
130
+ </a>
131
+ </div>
132
+
133
+ <div class="method-description">
134
+ <p><a class="source-toggle" href="#"
135
+ onclick="toggleCode('M000025-source');return false;">[Source]</a></p>
136
+ <div class="method-source-code" id="M000025-source">
137
+ <pre>
138
+ <span class="ruby-comment cmt"># File lib/funit/functions.rb, line 7</span>
139
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>( <span class="ruby-identifier">name</span>=<span class="ruby-constant">ENV</span>[<span class="ruby-value str">'F9X'</span>] )
140
+ <span class="ruby-identifier">errorMessage</span> = <span class="ruby-value str">&quot;\nFortran compiler environment variable 'F9X' not set:\n\nfor bourne-based shells: export F9X=lf95 (in .profile)\nfor c-based shells: setenv F9X lf95 (in .login)\nfor windows: set F9X=C:\\\\Program Files\\\\lf95 (in autoexec.bat)\n\n&quot;</span>
141
+ <span class="ruby-identifier">raise</span>(<span class="ruby-identifier">errorMessage</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@name</span> = <span class="ruby-identifier">name</span>
142
+ <span class="ruby-keyword kw">end</span>
143
+ </pre>
144
+ </div>
145
+ </div>
146
+ </div>
147
+
148
+
149
+ </div>
150
+
151
+
152
+ </div>
153
+
154
+
155
+ <div id="validator-badges">
156
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
157
+ </div>
158
+
159
+ </body>
160
+ </html>
@@ -0,0 +1,441 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Class: Funit::Depend</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Class</strong></td>
53
+ <td class="class-name-in-header">Funit::Depend</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../../files/lib/funit/fortran_deps_rb.html">
59
+ lib/funit/fortran_deps.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ <tr class="top-aligned-row">
66
+ <td><strong>Parent:</strong></td>
67
+ <td>
68
+ Object
69
+ </td>
70
+ </tr>
71
+ </table>
72
+ </div>
73
+ <!-- banner header -->
74
+
75
+ <div id="bodyContent">
76
+
77
+
78
+
79
+ <div id="contextContent">
80
+
81
+
82
+
83
+ </div>
84
+
85
+ <div id="method-list">
86
+ <h3 class="section-bar">Methods</h3>
87
+
88
+ <div class="name-list">
89
+ <a href="#M000018">build_dictionary_of_modules_in</a>&nbsp;&nbsp;
90
+ <a href="#M000020">build_hash_of_modules_in_files_within</a>&nbsp;&nbsp;
91
+ <a href="#M000022">dependencies</a>&nbsp;&nbsp;
92
+ <a href="#M000019">fortran_files_within</a>&nbsp;&nbsp;
93
+ <a href="#M000021">makefile_dependency_line</a>&nbsp;&nbsp;
94
+ <a href="#M000017">modules_defined_in</a>&nbsp;&nbsp;
95
+ <a href="#M000016">modules_used_in</a>&nbsp;&nbsp;
96
+ <a href="#M000015">new</a>&nbsp;&nbsp;
97
+ <a href="#M000024">required_source_files</a>&nbsp;&nbsp;
98
+ <a href="#M000023">source_file_dependencies</a>&nbsp;&nbsp;
99
+ </div>
100
+ </div>
101
+
102
+ </div>
103
+
104
+
105
+ <!-- if includes -->
106
+
107
+ <div id="section">
108
+
109
+
110
+
111
+
112
+
113
+ <div id="attribute-list">
114
+ <h3 class="section-bar">Attributes</h3>
115
+
116
+ <div class="name-list">
117
+ <table>
118
+ <tr class="top-aligned-row context-row">
119
+ <td class="context-item-name">file_dependencies</td>
120
+ <td class="context-item-value">&nbsp;[R]&nbsp;</td>
121
+ <td class="context-item-desc"></td>
122
+ </tr>
123
+ <tr class="top-aligned-row context-row">
124
+ <td class="context-item-name">source_files</td>
125
+ <td class="context-item-value">&nbsp;[R]&nbsp;</td>
126
+ <td class="context-item-desc"></td>
127
+ </tr>
128
+ </table>
129
+ </div>
130
+ </div>
131
+
132
+
133
+
134
+ <!-- if method_list -->
135
+ <div id="methods">
136
+ <h3 class="section-bar">Public Class methods</h3>
137
+
138
+ <div id="method-M000015" class="method-detail">
139
+ <a name="M000015"></a>
140
+
141
+ <div class="method-heading">
142
+ <a href="#M000015" class="method-signature">
143
+ <span class="method-name">new</span><span class="method-args">( searchPath = %w[ ../lib . ] )</span>
144
+ </a>
145
+ </div>
146
+
147
+ <div class="method-description">
148
+ <p><a class="source-toggle" href="#"
149
+ onclick="toggleCode('M000015-source');return false;">[Source]</a></p>
150
+ <div class="method-source-code" id="M000015-source">
151
+ <pre>
152
+ <span class="ruby-comment cmt"># File lib/funit/fortran_deps.rb, line 11</span>
153
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>( <span class="ruby-identifier">searchPath</span> = <span class="ruby-node">%w[ ../lib . ]</span> )
154
+ <span class="ruby-ivar">@parsed</span> = <span class="ruby-constant">Array</span>.<span class="ruby-identifier">new</span>
155
+ <span class="ruby-ivar">@hash</span> = <span class="ruby-identifier">build_hash_of_modules_in_files_within</span> <span class="ruby-identifier">searchPath</span>
156
+ <span class="ruby-ivar">@file_dependencies</span> = <span class="ruby-constant">Hash</span>.<span class="ruby-identifier">new</span>
157
+ <span class="ruby-ivar">@source_files</span> = <span class="ruby-constant">Array</span>.<span class="ruby-identifier">new</span>
158
+ <span class="ruby-keyword kw">end</span>
159
+ </pre>
160
+ </div>
161
+ </div>
162
+ </div>
163
+
164
+ <h3 class="section-bar">Public Instance methods</h3>
165
+
166
+ <div id="method-M000018" class="method-detail">
167
+ <a name="M000018"></a>
168
+
169
+ <div class="method-heading">
170
+ <a href="#M000018" class="method-signature">
171
+ <span class="method-name">build_dictionary_of_modules_in</span><span class="method-args">( files )</span>
172
+ </a>
173
+ </div>
174
+
175
+ <div class="method-description">
176
+ <p><a class="source-toggle" href="#"
177
+ onclick="toggleCode('M000018-source');return false;">[Source]</a></p>
178
+ <div class="method-source-code" id="M000018-source">
179
+ <pre>
180
+ <span class="ruby-comment cmt"># File lib/funit/fortran_deps.rb, line 30</span>
181
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">build_dictionary_of_modules_in</span>( <span class="ruby-identifier">files</span> )
182
+ <span class="ruby-identifier">file_containing_module</span> = <span class="ruby-constant">Hash</span>.<span class="ruby-identifier">new</span>
183
+ <span class="ruby-identifier">files</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">file</span><span class="ruby-operator">|</span>
184
+ <span class="ruby-identifier">modules_defined_in</span>( <span class="ruby-identifier">file</span> ).<span class="ruby-identifier">each</span>{ <span class="ruby-operator">|</span><span class="ruby-identifier">mod</span><span class="ruby-operator">|</span> <span class="ruby-identifier">file_containing_module</span>[<span class="ruby-identifier">mod</span>]=<span class="ruby-identifier">file</span> }
185
+ <span class="ruby-keyword kw">end</span>
186
+ <span class="ruby-identifier">file_containing_module</span>
187
+ <span class="ruby-keyword kw">end</span>
188
+ </pre>
189
+ </div>
190
+ </div>
191
+ </div>
192
+
193
+ <div id="method-M000020" class="method-detail">
194
+ <a name="M000020"></a>
195
+
196
+ <div class="method-heading">
197
+ <a href="#M000020" class="method-signature">
198
+ <span class="method-name">build_hash_of_modules_in_files_within</span><span class="method-args">( searchPath = %w[../lib .] )</span>
199
+ </a>
200
+ </div>
201
+
202
+ <div class="method-description">
203
+ <p><a class="source-toggle" href="#"
204
+ onclick="toggleCode('M000020-source');return false;">[Source]</a></p>
205
+ <div class="method-source-code" id="M000020-source">
206
+ <pre>
207
+ <span class="ruby-comment cmt"># File lib/funit/fortran_deps.rb, line 45</span>
208
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">build_hash_of_modules_in_files_within</span>( <span class="ruby-identifier">searchPath</span> = <span class="ruby-node">%w[../lib .]</span> )
209
+ <span class="ruby-identifier">build_dictionary_of_modules_in</span>( <span class="ruby-identifier">fortran_files_within</span>( <span class="ruby-identifier">searchPath</span> ) )
210
+ <span class="ruby-keyword kw">end</span>
211
+ </pre>
212
+ </div>
213
+ </div>
214
+ </div>
215
+
216
+ <div id="method-M000022" class="method-detail">
217
+ <a name="M000022"></a>
218
+
219
+ <div class="method-heading">
220
+ <a href="#M000022" class="method-signature">
221
+ <span class="method-name">dependencies</span><span class="method-args">( start )</span>
222
+ </a>
223
+ </div>
224
+
225
+ <div class="method-description">
226
+ <p><a class="source-toggle" href="#"
227
+ onclick="toggleCode('M000022-source');return false;">[Source]</a></p>
228
+ <div class="method-source-code" id="M000022-source">
229
+ <pre>
230
+ <span class="ruby-comment cmt"># File lib/funit/fortran_deps.rb, line 73</span>
231
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">dependencies</span>( <span class="ruby-identifier">start</span> )
232
+ <span class="ruby-identifier">modules</span> = <span class="ruby-identifier">modules_used_in</span>( <span class="ruby-identifier">start</span> )
233
+ <span class="ruby-ivar">@parsed</span> = <span class="ruby-ivar">@parsed</span> <span class="ruby-operator">||</span> [<span class="ruby-identifier">start</span>]
234
+ <span class="ruby-identifier">newSourceFiles</span> = <span class="ruby-identifier">modules</span>.<span class="ruby-identifier">collect</span>{ <span class="ruby-operator">|</span><span class="ruby-identifier">mod</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@hash</span>[<span class="ruby-identifier">mod</span>] }.<span class="ruby-identifier">compact</span>
235
+ <span class="ruby-identifier">makefile_dependency_line</span>(<span class="ruby-identifier">start</span>) <span class="ruby-operator">+</span>
236
+ <span class="ruby-identifier">newSourceFiles</span>.<span class="ruby-identifier">collect</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">file</span><span class="ruby-operator">|</span>
237
+ <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@parsed</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">file</span>)
238
+ <span class="ruby-ivar">@parsed</span>.<span class="ruby-identifier">push</span> <span class="ruby-identifier">file</span>
239
+ <span class="ruby-identifier">dependencies</span> <span class="ruby-identifier">file</span>
240
+ <span class="ruby-keyword kw">end</span>.<span class="ruby-identifier">to_s</span>
241
+ <span class="ruby-keyword kw">end</span>
242
+ </pre>
243
+ </div>
244
+ </div>
245
+ </div>
246
+
247
+ <div id="method-M000019" class="method-detail">
248
+ <a name="M000019"></a>
249
+
250
+ <div class="method-heading">
251
+ <a href="#M000019" class="method-signature">
252
+ <span class="method-name">fortran_files_within</span><span class="method-args">( search_path = %w[ ../lib . ] )</span>
253
+ </a>
254
+ </div>
255
+
256
+ <div class="method-description">
257
+ <p><a class="source-toggle" href="#"
258
+ onclick="toggleCode('M000019-source');return false;">[Source]</a></p>
259
+ <div class="method-source-code" id="M000019-source">
260
+ <pre>
261
+ <span class="ruby-comment cmt"># File lib/funit/fortran_deps.rb, line 38</span>
262
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">fortran_files_within</span>( <span class="ruby-identifier">search_path</span> = <span class="ruby-node">%w[ ../lib . ]</span> )
263
+ <span class="ruby-identifier">source</span> = <span class="ruby-identifier">search_path</span>.<span class="ruby-identifier">map</span>{ <span class="ruby-operator">|</span><span class="ruby-identifier">path</span><span class="ruby-operator">|</span> <span class="ruby-constant">Dir</span>[<span class="ruby-identifier">path</span><span class="ruby-operator">+</span><span class="ruby-value str">&quot;/*.[fF]90&quot;</span>] }
264
+ <span class="ruby-identifier">source</span>.<span class="ruby-identifier">flatten!</span>.<span class="ruby-identifier">uniq!</span>
265
+ <span class="ruby-identifier">source</span>.<span class="ruby-identifier">delete_if</span>{ <span class="ruby-operator">|</span><span class="ruby-identifier">file</span><span class="ruby-operator">|</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">lstat</span>(<span class="ruby-identifier">file</span>).<span class="ruby-identifier">symlink?</span> }
266
+ <span class="ruby-identifier">source</span>.<span class="ruby-identifier">delete_if</span>{ <span class="ruby-operator">|</span><span class="ruby-identifier">file</span><span class="ruby-operator">|</span> <span class="ruby-identifier">file</span>.<span class="ruby-identifier">match</span>(<span class="ruby-regexp re">/lmpi_module_template.F90/</span>) }
267
+ <span class="ruby-keyword kw">end</span>
268
+ </pre>
269
+ </div>
270
+ </div>
271
+ </div>
272
+
273
+ <div id="method-M000021" class="method-detail">
274
+ <a name="M000021"></a>
275
+
276
+ <div class="method-heading">
277
+ <a href="#M000021" class="method-signature">
278
+ <span class="method-name">makefile_dependency_line</span><span class="method-args">( source )</span>
279
+ </a>
280
+ </div>
281
+
282
+ <div class="method-description">
283
+ <p><a class="source-toggle" href="#"
284
+ onclick="toggleCode('M000021-source');return false;">[Source]</a></p>
285
+ <div class="method-source-code" id="M000021-source">
286
+ <pre>
287
+ <span class="ruby-comment cmt"># File lib/funit/fortran_deps.rb, line 49</span>
288
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">makefile_dependency_line</span>( <span class="ruby-identifier">source</span> )
289
+ <span class="ruby-identifier">realSource</span> = <span class="ruby-identifier">source</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-regexp re">/PHYSICS_DUMMY/</span>,<span class="ruby-value str">'PHYSICS_MODULES'</span>)<span class="ruby-comment cmt"># What's this?</span>
290
+ <span class="ruby-identifier">sourceNoPath</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">basename</span> <span class="ruby-identifier">source</span>
291
+ <span class="ruby-ivar">@source_files</span>.<span class="ruby-identifier">push</span> <span class="ruby-identifier">sourceNoPath</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">%r|^.*/|</span>,<span class="ruby-value str">''</span>)
292
+ <span class="ruby-identifier">output</span> = <span class="ruby-value str">''</span>
293
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-constant">File</span>.<span class="ruby-identifier">expand_path</span>(<span class="ruby-identifier">source</span>) <span class="ruby-operator">!=</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">expand_path</span>(<span class="ruby-identifier">sourceNoPath</span>))
294
+ <span class="ruby-identifier">output</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">sourceNoPath</span><span class="ruby-operator">+</span> <span class="ruby-value str">&quot;: &quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">realSource</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;\n&quot;</span>
295
+ <span class="ruby-identifier">output</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">&quot;\tln -sf &quot;</span><span class="ruby-operator">+</span><span class="ruby-identifier">realSource</span><span class="ruby-operator">+</span><span class="ruby-value str">&quot; .\n&quot;</span>
296
+ <span class="ruby-keyword kw">end</span>
297
+ <span class="ruby-identifier">output</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">source</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/\.(f|F)90$/</span>, <span class="ruby-value str">&quot;.o&quot;</span>).<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">%r|^.*/|</span>,<span class="ruby-value str">&quot;&quot;</span> ) <span class="ruby-operator">+</span>
298
+ <span class="ruby-value str">&quot;: &quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">source</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">%r|^.*/|</span>,<span class="ruby-value str">&quot;&quot;</span> )
299
+ <span class="ruby-identifier">modules_used_in</span>( <span class="ruby-identifier">source</span> ).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">use</span><span class="ruby-operator">|</span>
300
+ <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@hash</span>[<span class="ruby-identifier">use</span>]
301
+ <span class="ruby-keyword kw">unless</span> ( <span class="ruby-identifier">use</span><span class="ruby-operator">=~</span><span class="ruby-regexp re">/f90_unix/</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">use</span><span class="ruby-operator">=~</span><span class="ruby-regexp re">/nas_system/</span> )
302
+ <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;Warning: unable to locate module #{use} used in #{source}.&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">$DEBUG</span>
303
+ <span class="ruby-keyword kw">end</span>
304
+ <span class="ruby-keyword kw">next</span>
305
+ <span class="ruby-keyword kw">end</span>
306
+ <span class="ruby-identifier">output</span> = <span class="ruby-identifier">output</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot; \\\n &quot;</span> <span class="ruby-operator">+</span>
307
+ <span class="ruby-ivar">@hash</span>[<span class="ruby-identifier">use</span>].<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/\.(f|F)90$/</span>, <span class="ruby-value str">&quot;.o&quot;</span>).<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">%r|^.*/|</span>,<span class="ruby-value str">&quot;&quot;</span> )
308
+ <span class="ruby-keyword kw">end</span>
309
+ <span class="ruby-identifier">output</span><span class="ruby-operator">+</span><span class="ruby-value str">&quot;\n&quot;</span>
310
+ <span class="ruby-keyword kw">end</span>
311
+ </pre>
312
+ </div>
313
+ </div>
314
+ </div>
315
+
316
+ <div id="method-M000017" class="method-detail">
317
+ <a name="M000017"></a>
318
+
319
+ <div class="method-heading">
320
+ <a href="#M000017" class="method-signature">
321
+ <span class="method-name">modules_defined_in</span><span class="method-args">( file )</span>
322
+ </a>
323
+ </div>
324
+
325
+ <div class="method-description">
326
+ <p><a class="source-toggle" href="#"
327
+ onclick="toggleCode('M000017-source');return false;">[Source]</a></p>
328
+ <div class="method-source-code" id="M000017-source">
329
+ <pre>
330
+ <span class="ruby-comment cmt"># File lib/funit/fortran_deps.rb, line 24</span>
331
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">modules_defined_in</span>( <span class="ruby-identifier">file</span> )
332
+ <span class="ruby-identifier">modules</span> = <span class="ruby-constant">IO</span>.<span class="ruby-identifier">readlines</span>( <span class="ruby-identifier">file</span> ).<span class="ruby-identifier">map</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">line</span><span class="ruby-operator">|</span>
333
+ <span class="ruby-identifier">$1</span>.<span class="ruby-identifier">downcase</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">line</span>.<span class="ruby-identifier">match</span>( <span class="ruby-regexp re">/^\s*module\s+(\w+)/i</span> )
334
+ <span class="ruby-keyword kw">end</span>.<span class="ruby-identifier">uniq</span>.<span class="ruby-identifier">compact</span>
335
+ <span class="ruby-keyword kw">end</span>
336
+ </pre>
337
+ </div>
338
+ </div>
339
+ </div>
340
+
341
+ <div id="method-M000016" class="method-detail">
342
+ <a name="M000016"></a>
343
+
344
+ <div class="method-heading">
345
+ <a href="#M000016" class="method-signature">
346
+ <span class="method-name">modules_used_in</span><span class="method-args">( file )</span>
347
+ </a>
348
+ </div>
349
+
350
+ <div class="method-description">
351
+ <p><a class="source-toggle" href="#"
352
+ onclick="toggleCode('M000016-source');return false;">[Source]</a></p>
353
+ <div class="method-source-code" id="M000016-source">
354
+ <pre>
355
+ <span class="ruby-comment cmt"># File lib/funit/fortran_deps.rb, line 18</span>
356
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">modules_used_in</span>( <span class="ruby-identifier">file</span> )
357
+ <span class="ruby-identifier">modules</span> = <span class="ruby-constant">IO</span>.<span class="ruby-identifier">readlines</span>( <span class="ruby-identifier">file</span> ).<span class="ruby-identifier">map</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">line</span><span class="ruby-operator">|</span>
358
+ <span class="ruby-identifier">$1</span>.<span class="ruby-identifier">downcase</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">line</span>.<span class="ruby-identifier">match</span>( <span class="ruby-regexp re">/^\s*use\s+(\w+)/i</span> )
359
+ <span class="ruby-keyword kw">end</span>.<span class="ruby-identifier">uniq</span>.<span class="ruby-identifier">compact</span>
360
+ <span class="ruby-keyword kw">end</span>
361
+ </pre>
362
+ </div>
363
+ </div>
364
+ </div>
365
+
366
+ <div id="method-M000024" class="method-detail">
367
+ <a name="M000024"></a>
368
+
369
+ <div class="method-heading">
370
+ <a href="#M000024" class="method-signature">
371
+ <span class="method-name">required_source_files</span><span class="method-args">( head_f90 )</span>
372
+ </a>
373
+ </div>
374
+
375
+ <div class="method-description">
376
+ <p><a class="source-toggle" href="#"
377
+ onclick="toggleCode('M000024-source');return false;">[Source]</a></p>
378
+ <div class="method-source-code" id="M000024-source">
379
+ <pre>
380
+ <span class="ruby-comment cmt"># File lib/funit/fortran_deps.rb, line 96</span>
381
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">required_source_files</span>( <span class="ruby-identifier">head_f90</span> )
382
+ <span class="ruby-ivar">@parsed</span>.<span class="ruby-identifier">clear</span>
383
+ <span class="ruby-identifier">source_file_dependencies</span>( <span class="ruby-identifier">head_f90</span> )
384
+ <span class="ruby-identifier">sources</span> = <span class="ruby-constant">Array</span>.<span class="ruby-identifier">new</span>
385
+ <span class="ruby-keyword kw">while</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@file_dependencies</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-keyword kw">do</span>
386
+ <span class="ruby-identifier">no_dependents_pair</span> = <span class="ruby-ivar">@file_dependencies</span>.<span class="ruby-identifier">detect</span>{ <span class="ruby-operator">|</span><span class="ruby-identifier">h</span>,<span class="ruby-identifier">d</span><span class="ruby-operator">|</span> <span class="ruby-identifier">d</span> <span class="ruby-operator">==</span> [] }
387
+ <span class="ruby-identifier">no_dependents</span> = <span class="ruby-identifier">no_dependents_pair</span>.<span class="ruby-identifier">first</span>
388
+ <span class="ruby-identifier">sources</span>.<span class="ruby-identifier">push</span> <span class="ruby-identifier">no_dependents</span>
389
+ <span class="ruby-ivar">@file_dependencies</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">no_dependents</span>){ <span class="ruby-operator">|</span><span class="ruby-identifier">el</span><span class="ruby-operator">|</span> <span class="ruby-node">&quot;#{el} not found&quot;</span> }
390
+ <span class="ruby-ivar">@file_dependencies</span>.<span class="ruby-identifier">each_value</span>{ <span class="ruby-operator">|</span><span class="ruby-identifier">deps</span><span class="ruby-operator">|</span> <span class="ruby-identifier">deps</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">no_dependents</span>) }
391
+ <span class="ruby-keyword kw">end</span>
392
+ <span class="ruby-identifier">sources</span>
393
+ <span class="ruby-keyword kw">end</span>
394
+ </pre>
395
+ </div>
396
+ </div>
397
+ </div>
398
+
399
+ <div id="method-M000023" class="method-detail">
400
+ <a name="M000023"></a>
401
+
402
+ <div class="method-heading">
403
+ <a href="#M000023" class="method-signature">
404
+ <span class="method-name">source_file_dependencies</span><span class="method-args">( head_f90 )</span>
405
+ </a>
406
+ </div>
407
+
408
+ <div class="method-description">
409
+ <p><a class="source-toggle" href="#"
410
+ onclick="toggleCode('M000023-source');return false;">[Source]</a></p>
411
+ <div class="method-source-code" id="M000023-source">
412
+ <pre>
413
+ <span class="ruby-comment cmt"># File lib/funit/fortran_deps.rb, line 85</span>
414
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">source_file_dependencies</span>( <span class="ruby-identifier">head_f90</span> )
415
+ <span class="ruby-identifier">modules_head_uses</span> = <span class="ruby-identifier">modules_used_in</span>( <span class="ruby-identifier">head_f90</span> )
416
+ <span class="ruby-identifier">required_f90s</span> = <span class="ruby-identifier">modules_head_uses</span>.<span class="ruby-identifier">map</span>{ <span class="ruby-operator">|</span><span class="ruby-identifier">mod</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@hash</span>[<span class="ruby-identifier">mod</span>] }.<span class="ruby-identifier">compact</span>
417
+ <span class="ruby-ivar">@file_dependencies</span>[<span class="ruby-identifier">head_f90</span>] = <span class="ruby-identifier">required_f90s</span>
418
+ <span class="ruby-identifier">required_f90s</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">required_f90</span><span class="ruby-operator">|</span>
419
+ <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@parsed</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">required_f90</span>)
420
+ <span class="ruby-identifier">source_file_dependencies</span>( <span class="ruby-identifier">required_f90</span> )
421
+ <span class="ruby-keyword kw">end</span>
422
+ <span class="ruby-ivar">@parsed</span>.<span class="ruby-identifier">push</span> <span class="ruby-identifier">head_f90</span>
423
+ <span class="ruby-keyword kw">end</span>
424
+ </pre>
425
+ </div>
426
+ </div>
427
+ </div>
428
+
429
+
430
+ </div>
431
+
432
+
433
+ </div>
434
+
435
+
436
+ <div id="validator-badges">
437
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
438
+ </div>
439
+
440
+ </body>
441
+ </html>