xbrlware-ce 1.0.4 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. data/Rakefile.rb +4 -4
  2. data/Readme.txt +6 -1
  3. data/ReleaseNotes.txt +22 -5
  4. data/doc/classes/Edgar/HTMLFeedDownloader.html +8 -8
  5. data/doc/classes/Edgar/RSSFeedDownloader.html +15 -15
  6. data/doc/classes/Xbrlware.html +22 -0
  7. data/doc/classes/Xbrlware/Context.html +104 -74
  8. data/doc/classes/Xbrlware/Context/Period.html +305 -0
  9. data/doc/classes/Xbrlware/Entity.html +75 -51
  10. data/doc/classes/Xbrlware/Identifier.html +17 -17
  11. data/doc/classes/Xbrlware/Instance.html +165 -137
  12. data/doc/classes/Xbrlware/Item.html +19 -19
  13. data/doc/classes/Xbrlware/Linkbase/CalculationLinkbase/Calculation.html +1 -1
  14. data/doc/classes/Xbrlware/Linkbase/DefinitionLinkbase/Definition.html +2 -2
  15. data/doc/classes/Xbrlware/Linkbase/Linkbase/Link.html +9 -3
  16. data/doc/classes/Xbrlware/Linkbase/Linkbase/Link/Arc.html +4 -4
  17. data/doc/classes/Xbrlware/Linkbase/PresentationLinkbase/Presentation.html +1 -1
  18. data/doc/classes/Xbrlware/Report.html +352 -0
  19. data/doc/classes/Xbrlware/Taxonomy.html +48 -48
  20. data/doc/classes/Xbrlware/TaxonomyDefintion.html +15 -15
  21. data/doc/classes/Xbrlware/Unit.html +6 -6
  22. data/doc/classes/Xbrlware/Unit/Divide.html +6 -6
  23. data/doc/created.rid +1 -1
  24. data/doc/files/Readme_txt.html +9 -1
  25. data/doc/files/lib/xbrlware/context_rb.html +1 -1
  26. data/doc/files/lib/xbrlware/date_util_rb.html +1 -1
  27. data/doc/files/lib/xbrlware/instance_rb.html +1 -1
  28. data/doc/files/lib/xbrlware/linkbase/calculation_linkbase_rb.html +1 -1
  29. data/doc/files/lib/xbrlware/linkbase/definition_linkbase_rb.html +1 -1
  30. data/doc/files/lib/xbrlware/linkbase/linkbase_rb.html +1 -1
  31. data/doc/files/lib/xbrlware/linkbase/presentation_linkbase_rb.html +1 -1
  32. data/doc/files/lib/xbrlware/meta_util_rb.html +1 -1
  33. data/doc/files/lib/xbrlware/report_rb.html +101 -0
  34. data/doc/files/lib/xbrlware/taxonomy_rb.html +1 -1
  35. data/doc/files/lib/xbrlware/version_rb.html +129 -0
  36. data/doc/fr_class_index.html +2 -0
  37. data/doc/fr_file_index.html +2 -0
  38. data/doc/fr_method_index.html +75 -62
  39. data/example/case_study/buy_strategy.rb +1 -1
  40. data/example/case_study/c_sell_strategy.rb +1 -1
  41. data/lib/xbrlware/context.rb +77 -34
  42. data/lib/xbrlware/date_util.rb +16 -6
  43. data/lib/xbrlware/instance.rb +35 -28
  44. data/lib/xbrlware/linkbase/calculation_linkbase.rb +1 -1
  45. data/lib/xbrlware/linkbase/definition_linkbase.rb +2 -2
  46. data/lib/xbrlware/linkbase/linkbase.rb +3 -2
  47. data/lib/xbrlware/linkbase/presentation_linkbase.rb +1 -1
  48. data/lib/xbrlware/meta_util.rb +5 -0
  49. data/lib/xbrlware/report.rb +277 -0
  50. data/lib/xbrlware/taxonomy.rb +13 -10
  51. data/lib/xbrlware/version.rb +22 -0
  52. data/test/lib/xbrlware/47_context_test.rb +13 -4
  53. data/test/lib/xbrlware/date_util_test.rb +10 -2
  54. data/test/lib/xbrlware/instance_test.rb +19 -0
  55. data/test/lib/xbrlware/meta_util_test.rb +21 -1
  56. metadata +10 -4
@@ -100,9 +100,9 @@ instance page on xbrlware wiki</a> for more details.
100
100
  <h3 class="section-bar">Methods</h3>
101
101
 
102
102
  <div class="name-list">
103
- <a href="#M000051">balance</a>&nbsp;&nbsp;
104
- <a href="#M000049">new</a>&nbsp;&nbsp;
105
- <a href="#M000050">value</a>&nbsp;&nbsp;
103
+ <a href="#M000063">balance</a>&nbsp;&nbsp;
104
+ <a href="#M000061">new</a>&nbsp;&nbsp;
105
+ <a href="#M000062">value</a>&nbsp;&nbsp;
106
106
  </div>
107
107
  </div>
108
108
 
@@ -180,23 +180,23 @@ instance page on xbrlware wiki</a> for more details.
180
180
  <div id="methods">
181
181
  <h3 class="section-bar">Public Class methods</h3>
182
182
 
183
- <div id="method-M000049" class="method-detail">
184
- <a name="M000049"></a>
183
+ <div id="method-M000061" class="method-detail">
184
+ <a name="M000061"></a>
185
185
 
186
186
  <div class="method-heading">
187
- <a href="#M000049" class="method-signature">
187
+ <a href="#M000061" class="method-signature">
188
188
  <span class="method-name">new</span><span class="method-args">(name, context, value, unit=nil,precision=nil,decimals=nil, footnotes=nil)</span>
189
189
  </a>
190
190
  </div>
191
191
 
192
192
  <div class="method-description">
193
193
  <p>
194
- Constructs item <a href="Item.html#M000050">value</a> is normalized based
194
+ Constructs item <a href="Item.html#M000062">value</a> is normalized based
195
195
  on precision and decimals passed as per XBRL specification
196
196
  </p>
197
197
  <p><a class="source-toggle" href="#"
198
- onclick="toggleCode('M000049-source');return false;">[Source]</a></p>
199
- <div class="method-source-code" id="M000049-source">
198
+ onclick="toggleCode('M000061-source');return false;">[Source]</a></p>
199
+ <div class="method-source-code" id="M000061-source">
200
200
  <pre>
201
201
  <span class="ruby-comment cmt"># File lib/xbrlware/item.rb, line 31</span>
202
202
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">context</span>, <span class="ruby-identifier">value</span>, <span class="ruby-identifier">unit</span>=<span class="ruby-keyword kw">nil</span>,<span class="ruby-identifier">precision</span>=<span class="ruby-keyword kw">nil</span>,<span class="ruby-identifier">decimals</span>=<span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">footnotes</span>=<span class="ruby-keyword kw">nil</span>)
@@ -215,19 +215,19 @@ on precision and decimals passed as per XBRL specification
215
215
 
216
216
  <h3 class="section-bar">Public Instance methods</h3>
217
217
 
218
- <div id="method-M000051" class="method-detail">
219
- <a name="M000051"></a>
218
+ <div id="method-M000063" class="method-detail">
219
+ <a name="M000063"></a>
220
220
 
221
221
  <div class="method-heading">
222
- <a href="#M000051" class="method-signature">
222
+ <a href="#M000063" class="method-signature">
223
223
  <span class="method-name">balance</span><span class="method-args">()</span>
224
224
  </a>
225
225
  </div>
226
226
 
227
227
  <div class="method-description">
228
228
  <p><a class="source-toggle" href="#"
229
- onclick="toggleCode('M000051-source');return false;">[Source]</a></p>
230
- <div class="method-source-code" id="M000051-source">
229
+ onclick="toggleCode('M000063-source');return false;">[Source]</a></p>
230
+ <div class="method-source-code" id="M000063-source">
231
231
  <pre>
232
232
  <span class="ruby-comment cmt"># File lib/xbrlware/item.rb, line 48</span>
233
233
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">balance</span>
@@ -239,19 +239,19 @@ on precision and decimals passed as per XBRL specification
239
239
  </div>
240
240
  </div>
241
241
 
242
- <div id="method-M000050" class="method-detail">
243
- <a name="M000050"></a>
242
+ <div id="method-M000062" class="method-detail">
243
+ <a name="M000062"></a>
244
244
 
245
245
  <div class="method-heading">
246
- <a href="#M000050" class="method-signature">
246
+ <a href="#M000062" class="method-signature">
247
247
  <span class="method-name">value</span><span class="method-args">() {|@value| ...}</span>
248
248
  </a>
249
249
  </div>
250
250
 
251
251
  <div class="method-description">
252
252
  <p><a class="source-toggle" href="#"
253
- onclick="toggleCode('M000050-source');return false;">[Source]</a></p>
254
- <div class="method-source-code" id="M000050-source">
253
+ onclick="toggleCode('M000062-source');return false;">[Source]</a></p>
254
+ <div class="method-source-code" id="M000062-source">
255
255
  <pre>
256
256
  <span class="ruby-comment cmt"># File lib/xbrlware/item.rb, line 41</span>
257
257
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">value</span>
@@ -148,7 +148,7 @@
148
148
  <pre>
149
149
  <span class="ruby-comment cmt"># File lib/xbrlware/linkbase/calculation_linkbase.rb, line 118</span>
150
150
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">entity_details</span>, <span class="ruby-identifier">title</span>, <span class="ruby-identifier">role</span>, <span class="ruby-identifier">href</span>=<span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">arcs</span>=<span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">contexts</span>=<span class="ruby-keyword kw">nil</span>)
151
- <span class="ruby-keyword kw">super</span>(<span class="ruby-identifier">title</span>, <span class="ruby-identifier">role</span>, <span class="ruby-identifier">href</span>, <span class="ruby-identifier">arcs</span>)
151
+ <span class="ruby-keyword kw">super</span>(<span class="ruby-value str">&quot;Calculation&quot;</span>, <span class="ruby-identifier">title</span>, <span class="ruby-identifier">role</span>, <span class="ruby-identifier">href</span>, <span class="ruby-identifier">arcs</span>)
152
152
  <span class="ruby-ivar">@contexts</span>=<span class="ruby-identifier">contexts</span>
153
153
  <span class="ruby-ivar">@entity_details</span>=<span class="ruby-identifier">entity_details</span>
154
154
  <span class="ruby-keyword kw">end</span>
@@ -144,7 +144,7 @@
144
144
  <pre>
145
145
  <span class="ruby-comment cmt"># File lib/xbrlware/linkbase/definition_linkbase.rb, line 153</span>
146
146
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">title</span>, <span class="ruby-identifier">role</span>, <span class="ruby-identifier">href</span>=<span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">primary_items</span>=<span class="ruby-keyword kw">nil</span>)
147
- <span class="ruby-keyword kw">super</span>(<span class="ruby-identifier">title</span>, <span class="ruby-identifier">role</span>, <span class="ruby-identifier">href</span>, <span class="ruby-identifier">primary_items</span>)
147
+ <span class="ruby-keyword kw">super</span>(<span class="ruby-value str">&quot;Definition&quot;</span>, <span class="ruby-identifier">title</span>, <span class="ruby-identifier">role</span>, <span class="ruby-identifier">href</span>, <span class="ruby-identifier">primary_items</span>)
148
148
  <span class="ruby-ivar">@primary_items</span>=<span class="ruby-identifier">primary_items</span>
149
149
  <span class="ruby-keyword kw">end</span>
150
150
  </pre>
@@ -178,7 +178,7 @@
178
178
  <span class="ruby-identifier">dimension</span>.<span class="ruby-identifier">domains</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">domain</span><span class="ruby-operator">|</span>
179
179
  <span class="ruby-identifier">domains</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">domain</span>.<span class="ruby-identifier">href</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-value str">&quot;_&quot;</span>, <span class="ruby-value str">&quot;:&quot;</span>)
180
180
  <span class="ruby-keyword kw">end</span>
181
- <span class="ruby-identifier">dim_dom_map</span>[<span class="ruby-identifier">dimension</span>.<span class="ruby-identifier">href</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-value str">&quot;_&quot;</span>, <span class="ruby-value str">&quot;:&quot;</span>)]=<span class="ruby-identifier">domains</span>
181
+ <span class="ruby-identifier">dim_dom_map</span>[<span class="ruby-identifier">dimension</span>.<span class="ruby-identifier">href</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-value str">&quot;_&quot;</span>, <span class="ruby-value str">&quot;:&quot;</span>)]=<span class="ruby-identifier">domains</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">domains</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
182
182
  <span class="ruby-keyword kw">end</span>
183
183
  <span class="ruby-keyword kw">end</span>
184
184
  <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@primary_items</span>.<span class="ruby-identifier">nil?</span>
@@ -123,6 +123,11 @@
123
123
  <td class="context-item-value">&nbsp;[R]&nbsp;</td>
124
124
  <td class="context-item-desc"></td>
125
125
  </tr>
126
+ <tr class="top-aligned-row context-row">
127
+ <td class="context-item-name">link_type</td>
128
+ <td class="context-item-value">&nbsp;[R]&nbsp;</td>
129
+ <td class="context-item-desc"></td>
130
+ </tr>
126
131
  <tr class="top-aligned-row context-row">
127
132
  <td class="context-item-name">role</td>
128
133
  <td class="context-item-value">&nbsp;[R]&nbsp;</td>
@@ -148,7 +153,7 @@
148
153
 
149
154
  <div class="method-heading">
150
155
  <a href="#M000005" class="method-signature">
151
- <span class="method-name">new</span><span class="method-args">(title, role, href, arcs=nil)</span>
156
+ <span class="method-name">new</span><span class="method-args">(link_type, title, role, href, arcs=nil)</span>
152
157
  </a>
153
158
  </div>
154
159
 
@@ -158,7 +163,8 @@
158
163
  <div class="method-source-code" id="M000005-source">
159
164
  <pre>
160
165
  <span class="ruby-comment cmt"># File lib/xbrlware/linkbase/linkbase.rb, line 100</span>
161
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">title</span>, <span class="ruby-identifier">role</span>, <span class="ruby-identifier">href</span>, <span class="ruby-identifier">arcs</span>=<span class="ruby-keyword kw">nil</span>)
166
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">link_type</span>, <span class="ruby-identifier">title</span>, <span class="ruby-identifier">role</span>, <span class="ruby-identifier">href</span>, <span class="ruby-identifier">arcs</span>=<span class="ruby-keyword kw">nil</span>)
167
+ <span class="ruby-ivar">@link_type</span>=<span class="ruby-identifier">link_type</span>
162
168
  <span class="ruby-ivar">@role</span> = <span class="ruby-identifier">role</span>
163
169
  <span class="ruby-ivar">@href</span> = <span class="ruby-identifier">href</span>
164
170
 
@@ -191,7 +197,7 @@
191
197
  onclick="toggleCode('M000006-source');return false;">[Source]</a></p>
192
198
  <div class="method-source-code" id="M000006-source">
193
199
  <pre>
194
- <span class="ruby-comment cmt"># File lib/xbrlware/linkbase/linkbase.rb, line 127</span>
200
+ <span class="ruby-comment cmt"># File lib/xbrlware/linkbase/linkbase.rb, line 128</span>
195
201
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">inspect</span>(<span class="ruby-identifier">verbose_flag</span>=<span class="ruby-value str">&quot;q&quot;</span>)
196
202
  <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot; title [&quot;</span><span class="ruby-operator">+</span><span class="ruby-identifier">title</span><span class="ruby-operator">+</span><span class="ruby-value str">&quot;] role [&quot;</span><span class="ruby-operator">+</span><span class="ruby-identifier">role</span><span class="ruby-operator">+</span><span class="ruby-value str">&quot;]&quot;</span>
197
203
  <span class="ruby-identifier">print_arc_hierarchy</span>(<span class="ruby-identifier">verbose_flag</span>)
@@ -178,7 +178,7 @@
178
178
  onclick="toggleCode('M000007-source');return false;">[Source]</a></p>
179
179
  <div class="method-source-code" id="M000007-source">
180
180
  <pre>
181
- <span class="ruby-comment cmt"># File lib/xbrlware/linkbase/linkbase.rb, line 138</span>
181
+ <span class="ruby-comment cmt"># File lib/xbrlware/linkbase/linkbase.rb, line 139</span>
182
182
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">item_id</span>, <span class="ruby-identifier">href</span>, <span class="ruby-identifier">role</span>=<span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">order</span>=<span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">priority</span>=<span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">label</span>=<span class="ruby-keyword kw">nil</span>)
183
183
  <span class="ruby-ivar">@item_id</span>=<span class="ruby-identifier">item_id</span>
184
184
  <span class="ruby-ivar">@href</span>=<span class="ruby-identifier">href</span>
@@ -214,7 +214,7 @@
214
214
  onclick="toggleCode('M000009-source');return false;">[Source]</a></p>
215
215
  <div class="method-source-code" id="M000009-source">
216
216
  <pre>
217
- <span class="ruby-comment cmt"># File lib/xbrlware/linkbase/linkbase.rb, line 157</span>
217
+ <span class="ruby-comment cmt"># File lib/xbrlware/linkbase/linkbase.rb, line 158</span>
218
218
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">eql?</span>(<span class="ruby-identifier">o</span>)
219
219
  <span class="ruby-identifier">o</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Arc</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-ivar">@item_id</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">item_id</span>
220
220
  <span class="ruby-keyword kw">end</span>
@@ -237,7 +237,7 @@
237
237
  onclick="toggleCode('M000008-source');return false;">[Source]</a></p>
238
238
  <div class="method-source-code" id="M000008-source">
239
239
  <pre>
240
- <span class="ruby-comment cmt"># File lib/xbrlware/linkbase/linkbase.rb, line 153</span>
240
+ <span class="ruby-comment cmt"># File lib/xbrlware/linkbase/linkbase.rb, line 154</span>
241
241
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">has_children?</span>
242
242
  <span class="ruby-ivar">@children</span>.<span class="ruby-identifier">size</span><span class="ruby-operator">&gt;</span><span class="ruby-value">0</span>
243
243
  <span class="ruby-keyword kw">end</span>
@@ -260,7 +260,7 @@
260
260
  onclick="toggleCode('M000010-source');return false;">[Source]</a></p>
261
261
  <div class="method-source-code" id="M000010-source">
262
262
  <pre>
263
- <span class="ruby-comment cmt"># File lib/xbrlware/linkbase/linkbase.rb, line 161</span>
263
+ <span class="ruby-comment cmt"># File lib/xbrlware/linkbase/linkbase.rb, line 162</span>
264
264
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">hash</span>
265
265
  <span class="ruby-ivar">@item_id</span>.<span class="ruby-identifier">hash</span>
266
266
  <span class="ruby-keyword kw">end</span>
@@ -169,7 +169,7 @@
169
169
  <pre>
170
170
  <span class="ruby-comment cmt"># File lib/xbrlware/linkbase/presentation_linkbase.rb, line 135</span>
171
171
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">entity_details</span>, <span class="ruby-identifier">title</span>, <span class="ruby-identifier">role</span>, <span class="ruby-identifier">href</span>=<span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">contexts</span>=<span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">arcs</span>=<span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">definition</span>=<span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">instance</span>=<span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">dimensions</span>=[])
172
- <span class="ruby-keyword kw">super</span>(<span class="ruby-identifier">title</span>, <span class="ruby-identifier">role</span>, <span class="ruby-identifier">href</span>, <span class="ruby-identifier">arcs</span>)
172
+ <span class="ruby-keyword kw">super</span>(<span class="ruby-value str">&quot;Presentation&quot;</span>, <span class="ruby-identifier">title</span>, <span class="ruby-identifier">role</span>, <span class="ruby-identifier">href</span>, <span class="ruby-identifier">arcs</span>)
173
173
  <span class="ruby-ivar">@entity_details</span>=<span class="ruby-identifier">entity_details</span>
174
174
  <span class="ruby-ivar">@contexts</span>=<span class="ruby-identifier">contexts</span>
175
175
  <span class="ruby-ivar">@definition</span>=<span class="ruby-identifier">definition</span>
@@ -0,0 +1,352 @@
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: Xbrlware::Report</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">Xbrlware::Report</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../../files/lib/xbrlware/report_rb.html">
59
+ lib/xbrlware/report.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
+ <div id="description">
82
+ <p>
83
+ This class defines methods to generate HTML reports from XBRL documents.
84
+ </p>
85
+
86
+ </div>
87
+
88
+
89
+ </div>
90
+
91
+ <div id="method-list">
92
+ <h3 class="section-bar">Methods</h3>
93
+
94
+ <div class="name-list">
95
+ <a href="#M000030">gen</a>&nbsp;&nbsp;
96
+ <a href="#M000031">gen_for</a>&nbsp;&nbsp;
97
+ <a href="#M000029">new</a>&nbsp;&nbsp;
98
+ </div>
99
+ </div>
100
+
101
+ </div>
102
+
103
+
104
+ <!-- if includes -->
105
+
106
+ <div id="section">
107
+
108
+
109
+ <div id="constants-list">
110
+ <h3 class="section-bar">Constants</h3>
111
+
112
+ <div class="name-list">
113
+ <table summary="Constants">
114
+ <tr class="top-aligned-row context-row">
115
+ <td class="context-item-name">PREF</td>
116
+ <td>=</td>
117
+ <td class="context-item-value">{}</td>
118
+ </tr>
119
+ </table>
120
+ </div>
121
+ </div>
122
+
123
+
124
+
125
+
126
+
127
+
128
+ <!-- if method_list -->
129
+ <div id="methods">
130
+ <h3 class="section-bar">Public Class methods</h3>
131
+
132
+ <div id="method-M000029" class="method-detail">
133
+ <a name="M000029"></a>
134
+
135
+ <div class="method-heading">
136
+ <a href="#M000029" class="method-signature">
137
+ <span class="method-name">new</span><span class="method-args">(entity_details={}, pref={})</span>
138
+ </a>
139
+ </div>
140
+
141
+ <div class="method-description">
142
+ <p><a class="source-toggle" href="#"
143
+ onclick="toggleCode('M000029-source');return false;">[Source]</a></p>
144
+ <div class="method-source-code" id="M000029-source">
145
+ <pre>
146
+ <span class="ruby-comment cmt"># File lib/xbrlware/report.rb, line 8</span>
147
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">entity_details</span>={}, <span class="ruby-identifier">pref</span>={})
148
+ <span class="ruby-constant">PREF</span>.<span class="ruby-identifier">merge!</span>(<span class="ruby-identifier">pref</span>)
149
+ <span class="ruby-constant">PREF</span>[<span class="ruby-value str">&quot;ITEM_FORMAT&quot;</span>]=<span class="ruby-identifier">lambda</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">val</span><span class="ruby-operator">|</span> (<span class="ruby-constant">BigDecimal</span>(<span class="ruby-identifier">val</span>)<span class="ruby-operator">/</span><span class="ruby-value">1000000</span>).<span class="ruby-identifier">round</span>(<span class="ruby-value">4</span>).<span class="ruby-identifier">to_s</span>(<span class="ruby-value str">&quot;F&quot;</span>)} <span class="ruby-keyword kw">if</span> <span class="ruby-constant">PREF</span>[<span class="ruby-value str">&quot;ITEM_FORMAT&quot;</span>].<span class="ruby-identifier">nil?</span>
150
+ <span class="ruby-constant">PREF</span>[<span class="ruby-value str">&quot;ITEM_FORMAT_DESC&quot;</span>]=<span class="ruby-value str">&quot; in millions &quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-constant">PREF</span>[<span class="ruby-value str">&quot;ITEM_FORMAT_DESC&quot;</span>].<span class="ruby-identifier">nil?</span>
151
+ <span class="ruby-constant">PREF</span>[<span class="ruby-value str">&quot;ITEM_FORMAT_EXCLUDE&quot;</span>] = [<span class="ruby-value str">&quot;EntityRegistrantName&quot;</span>, <span class="ruby-value str">&quot;EntityCentralIndexKey&quot;</span>, <span class="ruby-value str">&quot;DocumentType&quot;</span>, <span class="ruby-value str">&quot;DocumentPeriodEndDate&quot;</span>, <span class="ruby-value str">&quot;CurrentFiscalYearEndDate&quot;</span>, <span class="ruby-value str">&quot;EntityCommonStockSharesOutstanding&quot;</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-constant">PREF</span>[<span class="ruby-value str">&quot;ITEM_EXCLUDE&quot;</span>].<span class="ruby-identifier">nil?</span>
152
+ <span class="ruby-ivar">@entity_details</span>=<span class="ruby-identifier">entity_details</span>
153
+ <span class="ruby-keyword kw">end</span>
154
+ </pre>
155
+ </div>
156
+ </div>
157
+ </div>
158
+
159
+ <h3 class="section-bar">Public Instance methods</h3>
160
+
161
+ <div id="method-M000030" class="method-detail">
162
+ <a name="M000030"></a>
163
+
164
+ <div class="method-heading">
165
+ <a href="#M000030" class="method-signature">
166
+ <span class="method-name">gen</span><span class="method-args">(path_to_data_folder=&quot;.&quot;, report_for=&quot;pre|cal&quot;, report_type=&quot;html|xls|xml|json&quot;, verbose_flag=&quot;q&quot;)</span>
167
+ </a>
168
+ </div>
169
+
170
+ <div class="method-description">
171
+ <p>
172
+ Takes path to folder that contains xbrl documents of entities. If the
173
+ folder contains xbrl documents of single entity then HTML reports are
174
+ generated for that entity. If there is need to generate reports for
175
+ multiple entities then
176
+ </p>
177
+ <pre>
178
+ 1. Create root folder
179
+ 2. Create subfolder for each entity inside root folder
180
+ 3. The sub folders contains xbrl documents of the entity
181
+ 4. File names of xbrl documents has to be in the following convention (if files are not in the convention mentioned below, you have to use gen_for method to generate reports)
182
+ calculation linkbase document must end with _cal.xml
183
+ definition linkbase document must end with _def.xml
184
+ presentation linkbase document must end with _pre.xml
185
+ label linkbase document must end with _lab.xml
186
+ taxonomy file must end with .xsd
187
+ instance document must end with .xml
188
+ </pre>
189
+ <p>
190
+ calling &quot;<a href="Report.html#M000030">gen</a>&quot; with root folder,
191
+ will create reports for all entities under root folder detailed reports are
192
+ stored under &quot;reports&quot; folder of the entity. If the
193
+ &quot;reports&quot; doesn&#8216;t exist, it will be created. Consolidated
194
+ report of all generated reports is stored under root folder with name
195
+ &quot;edgar_report_index.html&quot;
196
+ </p>
197
+ <p><a class="source-toggle" href="#"
198
+ onclick="toggleCode('M000030-source');return false;">[Source]</a></p>
199
+ <div class="method-source-code" id="M000030-source">
200
+ <pre>
201
+ <span class="ruby-comment cmt"># File lib/xbrlware/report.rb, line 122</span>
202
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">gen</span>(<span class="ruby-identifier">path_to_data_folder</span>=<span class="ruby-value str">&quot;.&quot;</span>, <span class="ruby-identifier">report_for</span>=<span class="ruby-value str">&quot;pre|cal&quot;</span>, <span class="ruby-identifier">report_type</span>=<span class="ruby-value str">&quot;html|xls|xml|json&quot;</span>, <span class="ruby-identifier">verbose_flag</span>=<span class="ruby-value str">&quot;q&quot;</span>)
203
+ <span class="ruby-ivar">@ins_report_map</span>={}
204
+ <span class="ruby-identifier">files</span>=<span class="ruby-identifier">xbrl_files</span>(<span class="ruby-identifier">path_to_data_folder</span>)
205
+ <span class="ruby-identifier">$LOG</span>.<span class="ruby-identifier">info</span> <span class="ruby-value str">&quot; Filtering xbrl files from folder [&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">path_to_data_folder</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;] done&quot;</span>
206
+ <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_map</span><span class="ruby-operator">|</span>
207
+ <span class="ruby-keyword kw">begin</span>
208
+ <span class="ruby-ivar">@ins_report_map</span>[<span class="ruby-identifier">file_map</span>[<span class="ruby-value str">&quot;ins&quot;</span>]]=<span class="ruby-identifier">gen_for</span>(<span class="ruby-identifier">file_map</span>, <span class="ruby-identifier">report_for</span>, <span class="ruby-identifier">report_type</span>, <span class="ruby-identifier">verbose_flag</span>)
209
+ <span class="ruby-identifier">$LOG</span>.<span class="ruby-identifier">info</span> <span class="ruby-value str">&quot;Report generation for [&quot;</span><span class="ruby-operator">+</span><span class="ruby-identifier">file_map</span>[<span class="ruby-value str">&quot;ins&quot;</span>]<span class="ruby-operator">+</span><span class="ruby-value str">&quot;] completed.&quot;</span>
210
+ <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Exception</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">e</span><span class="ruby-operator">:</span>
211
+ <span class="ruby-identifier">$LOG</span>.<span class="ruby-identifier">fatal</span> <span class="ruby-identifier">e</span>.<span class="ruby-identifier">to_s</span>
212
+ <span class="ruby-keyword kw">end</span>
213
+ <span class="ruby-keyword kw">end</span>
214
+
215
+ <span class="ruby-identifier">erb</span> = <span class="ruby-constant">ERB</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@@html_template</span>)
216
+ <span class="ruby-identifier">index_content</span>=<span class="ruby-identifier">erb</span>.<span class="ruby-identifier">result</span>(<span class="ruby-identifier">get_binding</span>)
217
+ <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-value str">&quot;master_report_index.html&quot;</span>, <span class="ruby-value str">'w'</span>) {<span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span> <span class="ruby-identifier">f</span>.<span class="ruby-identifier">write</span>(<span class="ruby-identifier">index_content</span>) }
218
+
219
+ <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Exception</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">e</span><span class="ruby-operator">:</span>
220
+ <span class="ruby-identifier">$LOG</span>.<span class="ruby-identifier">fatal</span> <span class="ruby-identifier">e</span>.<span class="ruby-identifier">to_s</span>
221
+ <span class="ruby-keyword kw">end</span>
222
+ </pre>
223
+ </div>
224
+ </div>
225
+ </div>
226
+
227
+ <div id="method-M000031" class="method-detail">
228
+ <a name="M000031"></a>
229
+
230
+ <div class="method-heading">
231
+ <a href="#M000031" class="method-signature">
232
+ <span class="method-name">gen_for</span><span class="method-args">(file_map, report_for=&quot;pre|cal&quot;, report_type=&quot;html|xls|xml|json&quot;, verbose_flag=&quot;q&quot;, report_dir=nil, meta_gen=true)</span>
233
+ </a>
234
+ </div>
235
+
236
+ <div class="method-description">
237
+ <p>
238
+ Generates HTML reports from given Hash that contains files for instance,
239
+ taxonomy, calculation, presentation, label, definition. Example of
240
+ populating hash,
241
+ </p>
242
+ <pre>
243
+ files={}
244
+ files[&quot;ins&quot;] = &quot;&lt;instnace_file_path&gt;&quot;
245
+ files[&quot;tax&quot;] = &quot;&lt;taxonomy_file_path&gt;&quot;
246
+ files[&quot;cal&quot;] = &quot;&lt;calculation_linkbase_file_path&gt;&quot;
247
+ files[&quot;pre&quot;] = &quot;&lt;presentation_linkbase_file_path&gt;&quot;
248
+ files[&quot;lab&quot;] = &quot;&lt;label_linkbase_file_path&gt;&quot;
249
+ files[&quot;def&quot;] = &quot;&lt;definition_linkbase_file_path&gt;&quot;
250
+ </pre>
251
+ <p>
252
+ Generated HTML reports will be stored under &quot;reports&quot; folder of
253
+ current dir. If the &quot;reports&quot; doesn&#8216;t exist, it will be
254
+ created. If &quot;cal&quot; is passed as null, calculation linkbase path
255
+ from taxonomy will be used. Same for other linkbases too (ie,
256
+ &quot;pre&quot;, &quot;lab&quot; and &quot;def&quot;.)
257
+ </p>
258
+ <p><a class="source-toggle" href="#"
259
+ onclick="toggleCode('M000031-source');return false;">[Source]</a></p>
260
+ <div class="method-source-code" id="M000031-source">
261
+ <pre>
262
+ <span class="ruby-comment cmt"># File lib/xbrlware/report.rb, line 204</span>
263
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">gen_for</span> (<span class="ruby-identifier">file_map</span>, <span class="ruby-identifier">report_for</span>=<span class="ruby-value str">&quot;pre|cal&quot;</span>, <span class="ruby-identifier">report_type</span>=<span class="ruby-value str">&quot;html|xls|xml|json&quot;</span>, <span class="ruby-identifier">verbose_flag</span>=<span class="ruby-value str">&quot;q&quot;</span>, <span class="ruby-identifier">report_dir</span>=<span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">meta_gen</span>=<span class="ruby-keyword kw">true</span>)
264
+ <span class="ruby-identifier">ins_file</span>=<span class="ruby-identifier">file_map</span>[<span class="ruby-value str">&quot;ins&quot;</span>]
265
+ <span class="ruby-identifier">tax_file</span>=<span class="ruby-identifier">file_map</span>[<span class="ruby-value str">&quot;tax&quot;</span>]
266
+ <span class="ruby-identifier">cal_file</span>=<span class="ruby-identifier">file_map</span>[<span class="ruby-value str">&quot;cal&quot;</span>]
267
+ <span class="ruby-identifier">pre_file</span>=<span class="ruby-identifier">file_map</span>[<span class="ruby-value str">&quot;pre&quot;</span>]
268
+ <span class="ruby-identifier">lab_file</span>=<span class="ruby-identifier">file_map</span>[<span class="ruby-value str">&quot;lab&quot;</span>]
269
+ <span class="ruby-identifier">def_file</span>=<span class="ruby-identifier">file_map</span>[<span class="ruby-value str">&quot;def&quot;</span>]
270
+
271
+ <span class="ruby-identifier">reports_map</span>={}
272
+
273
+ <span class="ruby-identifier">instance</span>=<span class="ruby-keyword kw">nil</span>
274
+ <span class="ruby-identifier">m</span>=<span class="ruby-constant">Benchmark</span>.<span class="ruby-identifier">measure</span> <span class="ruby-keyword kw">do</span>
275
+ <span class="ruby-identifier">instance</span> = <span class="ruby-constant">Instance</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">ins_file</span>, <span class="ruby-identifier">tax_file</span>)
276
+ <span class="ruby-identifier">taxonomy</span>=<span class="ruby-identifier">instance</span>.<span class="ruby-identifier">taxonomy</span>
277
+ <span class="ruby-identifier">taxonomy</span>.<span class="ruby-identifier">init_all_lb</span>(<span class="ruby-identifier">cal_file</span>, <span class="ruby-identifier">pre_file</span>, <span class="ruby-identifier">lab_file</span>, <span class="ruby-identifier">def_file</span>)
278
+ <span class="ruby-keyword kw">end</span>
279
+ <span class="ruby-identifier">bm</span>(<span class="ruby-value str">&quot; Initializing xbrl took&quot;</span>, <span class="ruby-identifier">m</span>)
280
+
281
+ <span class="ruby-identifier">instance</span>.<span class="ruby-identifier">entity_details</span>=<span class="ruby-ivar">@entity_details</span>
282
+ <span class="ruby-identifier">reports_map</span>[<span class="ruby-value str">&quot;entity_details&quot;</span>]=<span class="ruby-identifier">instance</span>.<span class="ruby-identifier">entity_details</span>
283
+ <span class="ruby-identifier">reports_map</span>[<span class="ruby-value str">&quot;instance&quot;</span>]=<span class="ruby-identifier">instance</span>
284
+
285
+ <span class="ruby-identifier">report_dir</span> = (<span class="ruby-constant">File</span>.<span class="ruby-identifier">expand_path</span>(<span class="ruby-constant">File</span>.<span class="ruby-identifier">dirname</span>(<span class="ruby-identifier">ins_file</span>)) <span class="ruby-operator">+</span> <span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">Separator</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;report&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">Separator</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">report_dir</span>.<span class="ruby-identifier">nil?</span>
286
+ <span class="ruby-constant">File</span>.<span class="ruby-identifier">makedirs</span>(<span class="ruby-identifier">report_dir</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">directory?</span>(<span class="ruby-identifier">report_dir</span>)
287
+
288
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">report_for</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/pre/</span> <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-keyword kw">not</span> <span class="ruby-identifier">instance</span>.<span class="ruby-identifier">taxonomy</span>.<span class="ruby-identifier">prelb</span>.<span class="ruby-identifier">nil?</span>)
289
+ <span class="ruby-identifier">links</span>=<span class="ruby-identifier">instance</span>.<span class="ruby-identifier">taxonomy</span>.<span class="ruby-identifier">prelb</span>.<span class="ruby-identifier">presentation</span>
290
+ <span class="ruby-identifier">pre_dir</span> = <span class="ruby-identifier">report_dir</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;pre&quot;</span>
291
+ <span class="ruby-constant">File</span>.<span class="ruby-identifier">makedirs</span>(<span class="ruby-identifier">pre_dir</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">directory?</span>(<span class="ruby-identifier">pre_dir</span>)
292
+ <span class="ruby-identifier">reports_map</span>[<span class="ruby-value str">&quot;pre&quot;</span>]=<span class="ruby-identifier">write_reports</span>(<span class="ruby-identifier">links</span>, <span class="ruby-identifier">pre_dir</span>, <span class="ruby-identifier">report_type</span>, <span class="ruby-identifier">verbose_flag</span>)
293
+ <span class="ruby-keyword kw">end</span>
294
+
295
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">report_for</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/cal/</span> <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-keyword kw">not</span> <span class="ruby-identifier">instance</span>.<span class="ruby-identifier">taxonomy</span>.<span class="ruby-identifier">callb</span>.<span class="ruby-identifier">nil?</span>)
296
+ <span class="ruby-identifier">links</span>=<span class="ruby-identifier">instance</span>.<span class="ruby-identifier">taxonomy</span>.<span class="ruby-identifier">callb</span>.<span class="ruby-identifier">calculation</span>
297
+ <span class="ruby-identifier">cal_dir</span> = <span class="ruby-identifier">report_dir</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;cal&quot;</span>
298
+ <span class="ruby-constant">File</span>.<span class="ruby-identifier">makedirs</span>(<span class="ruby-identifier">cal_dir</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">directory?</span>(<span class="ruby-identifier">cal_dir</span>)
299
+ <span class="ruby-identifier">reports_map</span>[<span class="ruby-value str">&quot;cal&quot;</span>]=<span class="ruby-identifier">write_reports</span>(<span class="ruby-identifier">links</span>, <span class="ruby-identifier">cal_dir</span>, <span class="ruby-identifier">report_type</span>, <span class="ruby-identifier">verbose_flag</span>)
300
+ <span class="ruby-keyword kw">end</span>
301
+
302
+ <span class="ruby-identifier">_tmp</span> = <span class="ruby-ivar">@ins_report_map</span>
303
+
304
+ <span class="ruby-identifier">erb</span> = <span class="ruby-constant">ERB</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@@html_template</span>)
305
+ <span class="ruby-identifier">index_content</span>=<span class="ruby-identifier">erb</span>.<span class="ruby-identifier">result</span>(<span class="ruby-identifier">lambda</span> <span class="ruby-keyword kw">do</span>
306
+ <span class="ruby-ivar">@ins_report_map</span>={}
307
+ <span class="ruby-ivar">@ins_report_map</span>[<span class="ruby-identifier">file_map</span>[<span class="ruby-value str">&quot;ins&quot;</span>]]=<span class="ruby-identifier">reports_map</span>
308
+ <span class="ruby-identifier">lambda</span> {}
309
+ <span class="ruby-keyword kw">end</span>.<span class="ruby-identifier">call</span>)
310
+
311
+ <span class="ruby-ivar">@ins_report_map</span> = <span class="ruby-identifier">_tmp</span>
312
+
313
+ <span class="ruby-comment cmt"># str_ci_key=reports_map[&quot;entity_details&quot;][&quot;ci_key&quot;]</span>
314
+ <span class="ruby-comment cmt"># str_doc_end_date=reports_map[&quot;entity_details&quot;][&quot;doc_end_date&quot;]</span>
315
+ <span class="ruby-comment cmt"># str_doc_end_date=&quot;&quot; if str_doc_end_date.nil?</span>
316
+ <span class="ruby-comment cmt"># str_doc_end_date.gsub!(&quot;-&quot;, &quot;&quot;)</span>
317
+ <span class="ruby-comment cmt"># report_index_file = report_dir + str_ci_key+&quot;_&quot;+str_doc_end_date+&quot;_report.html&quot;</span>
318
+
319
+ <span class="ruby-identifier">report_index_file</span> = <span class="ruby-identifier">report_dir</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;report_index.html&quot;</span>
320
+ <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>( <span class="ruby-identifier">report_index_file</span>, <span class="ruby-value str">'w'</span>) {<span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span> <span class="ruby-identifier">f</span>.<span class="ruby-identifier">write</span>(<span class="ruby-identifier">index_content</span>) }
321
+
322
+ <span class="ruby-identifier">reports_map</span>[<span class="ruby-value str">&quot;report_index_file&quot;</span>]=<span class="ruby-identifier">report_index_file</span>
323
+
324
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">meta_gen</span>
325
+ <span class="ruby-identifier">meta_file_name</span> = <span class="ruby-identifier">report_dir</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;meta.json&quot;</span>
326
+ <span class="ruby-identifier">meta_gen_content</span> = <span class="ruby-identifier">reports_map</span>.<span class="ruby-identifier">reject</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">k</span>, <span class="ruby-identifier">v</span><span class="ruby-operator">|</span> <span class="ruby-identifier">k</span><span class="ruby-operator">==</span><span class="ruby-value str">&quot;instance&quot;</span>}.<span class="ruby-identifier">to_json</span>.<span class="ruby-identifier">to_s</span>
327
+ <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>( <span class="ruby-identifier">meta_file_name</span>, <span class="ruby-value str">'w'</span>) {<span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span> <span class="ruby-identifier">f</span>.<span class="ruby-identifier">write</span>(<span class="ruby-identifier">meta_gen_content</span>) }
328
+ <span class="ruby-identifier">reports_map</span>[<span class="ruby-value str">&quot;report_meta_file&quot;</span>]=<span class="ruby-identifier">meta_file_name</span>
329
+ <span class="ruby-keyword kw">end</span>
330
+
331
+ <span class="ruby-identifier">reports_map</span>
332
+ <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Exception</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">e</span>
333
+ <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot; Report generation failed for instance &quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">ins_file</span> <span class="ruby-operator">+</span> <span class="ruby-node">&quot;\n #{e.to_s + &quot;\n&quot; + e.backtrace.join(&quot;\n &quot;)}&quot;</span>
334
+ <span class="ruby-keyword kw">end</span>
335
+ </pre>
336
+ </div>
337
+ </div>
338
+ </div>
339
+
340
+
341
+ </div>
342
+
343
+
344
+ </div>
345
+
346
+
347
+ <div id="validator-badges">
348
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
349
+ </div>
350
+
351
+ </body>
352
+ </html>