surpass 0.0.4 → 0.0.6

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 (259) hide show
  1. data/History.txt +4 -0
  2. data/README.txt +3 -20
  3. data/Rakefile +2 -13
  4. data/bin/surpass +8 -0
  5. data/examples/big-16mb.rb +25 -0
  6. data/examples/big-random-strings.rb +28 -0
  7. data/examples/blanks.rb +34 -0
  8. data/examples/blanks.xls +0 -0
  9. data/examples/col_width.rb +16 -0
  10. data/examples/col_width.xls +0 -0
  11. data/examples/dates.rb +31 -0
  12. data/examples/dates.xls +0 -0
  13. data/examples/format.rb +23 -0
  14. data/examples/format.xls +0 -0
  15. data/examples/hello-world.rb +9 -0
  16. data/examples/hello-world.xls +0 -0
  17. data/examples/image.rb +10 -0
  18. data/examples/image.xls +0 -0
  19. data/examples/merged.rb +36 -0
  20. data/examples/merged.xls +0 -0
  21. data/examples/merged0.rb +27 -0
  22. data/examples/merged0.xls +0 -0
  23. data/examples/merged1.rb +99 -0
  24. data/examples/merged1.xls +0 -0
  25. data/examples/num_formats.rb +55 -0
  26. data/examples/num_formats.xls +0 -0
  27. data/examples/numbers.rb +24 -0
  28. data/examples/numbers.xls +0 -0
  29. data/examples/outline.rb +110 -0
  30. data/examples/outline.xls +0 -0
  31. data/examples/panes.rb +48 -0
  32. data/examples/panes.xls +0 -0
  33. data/examples/protection.rb +132 -0
  34. data/examples/protection.xls +0 -0
  35. data/examples/python.bmp +0 -0
  36. data/examples/row_styles.rb +16 -0
  37. data/examples/row_styles.xls +0 -0
  38. data/examples/row_styles_empty.rb +15 -0
  39. data/examples/row_styles_empty.xls +0 -0
  40. data/examples/set_cell_and_range_style.rb +12 -0
  41. data/examples/set_cell_and_range_style.xls +0 -0
  42. data/examples/wrapped-text.rb +13 -0
  43. data/examples/wrapped-text.xls +0 -0
  44. data/examples/write_arrays.rb +22 -0
  45. data/examples/write_arrays.xls +0 -0
  46. data/examples/ws_props.rb +80 -0
  47. data/lib/surpass/ExcelFormula.g +366 -0
  48. data/lib/surpass/ExcelFormula.tokens +30 -0
  49. data/lib/surpass/ExcelFormulaLexer.rb +922 -0
  50. data/lib/surpass/ExcelFormulaParser.rb +602 -0
  51. data/lib/{biff_record.rb → surpass/biff_record.rb} +0 -0
  52. data/lib/{bitmap.rb → surpass/bitmap.rb} +0 -0
  53. data/lib/{cell.rb → surpass/cell.rb} +2 -34
  54. data/lib/{chart.rb → surpass/chart.rb} +0 -0
  55. data/lib/{column.rb → surpass/column.rb} +0 -0
  56. data/lib/{document.rb → surpass/document.rb} +0 -0
  57. data/lib/surpass/excel_formula.rb +23 -0
  58. data/lib/{excel_magic.rb → surpass/excel_magic.rb} +0 -0
  59. data/lib/{formatting.rb → surpass/formatting.rb} +93 -53
  60. data/lib/{row.rb → surpass/row.rb} +0 -0
  61. data/lib/{style.rb → surpass/style.rb} +2 -1
  62. data/lib/surpass/tokens.txt +2 -0
  63. data/lib/{utilities.rb → surpass/utilities.rb} +0 -0
  64. data/lib/{workbook.rb → surpass/workbook.rb} +0 -0
  65. data/lib/{worksheet.rb → surpass/worksheet.rb} +15 -6
  66. data/lib/surpass.rb +1 -1
  67. data/spec/biff_record_spec.rb +268 -0
  68. data/spec/cell_spec.rb +56 -0
  69. data/spec/data/random-strings.txt +10000 -0
  70. data/spec/document_spec.rb +168 -0
  71. data/spec/excel_formula_spec.rb +27 -0
  72. data/spec/formatting_spec.rb +53 -0
  73. data/spec/output/cells-rk.xls +0 -0
  74. data/spec/output/cells.xls +0 -0
  75. data/spec/output/mini.xls +0 -0
  76. data/spec/reference/P-0508-0000507647-3280-5298.xls +0 -0
  77. data/spec/reference/all-cell-styles.bin +0 -0
  78. data/spec/reference/all-number-formats.bin +0 -0
  79. data/spec/reference/all-styles.bin +0 -0
  80. data/spec/reference/mini.xls +0 -0
  81. data/spec/row_spec.rb +19 -0
  82. data/spec/spec_helper.rb +10 -0
  83. data/spec/style_spec.rb +89 -0
  84. data/spec/surpass_spec.rb +7 -0
  85. data/spec/utilities_spec.rb +57 -0
  86. data/spec/workbook_spec.rb +48 -0
  87. data/spec/worksheet_spec.rb +0 -0
  88. data/stats/cloc.txt +8 -0
  89. data/stats/rcov.txt +0 -0
  90. data/stats/specdoc.txt +158 -0
  91. data/surpass.gemspec +40 -0
  92. data/tasks/setup.rb +1 -1
  93. data/tasks/zentest.rake +36 -0
  94. data/webby/README.txt +6 -0
  95. data/webby/Sitefile +43 -0
  96. data/webby/content/css/pygments.txt +6 -0
  97. data/webby/content/css/style.css +279 -0
  98. data/webby/content/examples/autoformat.png +0 -0
  99. data/webby/content/examples/autoformat.rb +32 -0
  100. data/webby/content/examples/autoformat.xls +0 -0
  101. data/webby/content/examples/borders.png +0 -0
  102. data/webby/content/examples/borders.rb +15 -0
  103. data/webby/content/examples/borders.xls +0 -0
  104. data/webby/content/examples/colours.png +0 -0
  105. data/webby/content/examples/colours.rb +23 -0
  106. data/webby/content/examples/colours.xls +0 -0
  107. data/webby/content/examples/data.png +0 -0
  108. data/webby/content/examples/data.rb +11 -0
  109. data/webby/content/examples/data.xls +0 -0
  110. data/webby/content/examples/formatting.png +0 -0
  111. data/webby/content/examples/formatting.rb +78 -0
  112. data/webby/content/examples/formatting.xls +0 -0
  113. data/webby/content/examples/hello-world.png +0 -0
  114. data/webby/content/examples/hello-world.py +8 -0
  115. data/webby/content/examples/hello-world.rb +9 -0
  116. data/webby/content/examples/hello-world.xls +0 -0
  117. data/webby/content/examples/number-format-string.png +0 -0
  118. data/webby/content/examples/number-format-string.rb +14 -0
  119. data/webby/content/examples/number-format-string.xls +0 -0
  120. data/webby/content/examples/patterns.png +0 -0
  121. data/webby/content/examples/patterns.rb +26 -0
  122. data/webby/content/examples/patterns.xls +0 -0
  123. data/webby/content/examples/show-greens.sh +1 -0
  124. data/webby/content/examples/surpass-info.sh +1 -0
  125. data/webby/content/img/Thumbs.db +0 -0
  126. data/webby/content/img/bg_menu.gif +0 -0
  127. data/webby/content/img/bg_t.gif +0 -0
  128. data/webby/content/img/bullet.gif +0 -0
  129. data/webby/content/img/logo.png +0 -0
  130. data/webby/content/img/logo_.jpg +0 -0
  131. data/webby/content/img/top_bg.gif +0 -0
  132. data/webby/content/img/top_bg_.gif +0 -0
  133. data/webby/content/index.txt +16 -0
  134. data/webby/content/installation/index.txt +24 -0
  135. data/webby/content/source/ExcelFormulaLexer.txt +7 -0
  136. data/webby/content/source/ExcelFormulaParser.txt +7 -0
  137. data/webby/content/source/biff_record.txt +7 -0
  138. data/webby/content/source/bitmap.txt +7 -0
  139. data/webby/content/source/cell.txt +7 -0
  140. data/webby/content/source/chart.txt +7 -0
  141. data/webby/content/source/column.txt +7 -0
  142. data/webby/content/source/document.txt +7 -0
  143. data/webby/content/source/excel_formula.txt +7 -0
  144. data/webby/content/source/excel_magic.txt +7 -0
  145. data/webby/content/source/formatting.txt +7 -0
  146. data/webby/content/source/row.txt +7 -0
  147. data/webby/content/source/style.txt +7 -0
  148. data/webby/content/source/utilities.txt +7 -0
  149. data/webby/content/source/workbook.txt +7 -0
  150. data/webby/content/source/worksheet.txt +7 -0
  151. data/webby/content/surpass-manual.erb +198 -0
  152. data/webby/layouts/book.txt +29 -0
  153. data/webby/layouts/default.txt +27 -0
  154. data/webby/layouts/two_column.txt +25 -0
  155. data/webby/layouts/web.txt +66 -0
  156. data/webby/output/.cairn +0 -0
  157. data/webby/output/css/blueprint/ie.css +26 -0
  158. data/webby/output/css/blueprint/plugins/buttons/icons/cross.png +0 -0
  159. data/webby/output/css/blueprint/plugins/buttons/icons/key.png +0 -0
  160. data/webby/output/css/blueprint/plugins/buttons/icons/tick.png +0 -0
  161. data/webby/output/css/blueprint/plugins/buttons/readme.txt +32 -0
  162. data/webby/output/css/blueprint/plugins/buttons/screen.css +97 -0
  163. data/webby/output/css/blueprint/plugins/fancy-type/readme.txt +14 -0
  164. data/webby/output/css/blueprint/plugins/fancy-type/screen.css +71 -0
  165. data/webby/output/css/blueprint/plugins/link-icons/icons/doc.png +0 -0
  166. data/webby/output/css/blueprint/plugins/link-icons/icons/email.png +0 -0
  167. data/webby/output/css/blueprint/plugins/link-icons/icons/external.png +0 -0
  168. data/webby/output/css/blueprint/plugins/link-icons/icons/feed.png +0 -0
  169. data/webby/output/css/blueprint/plugins/link-icons/icons/im.png +0 -0
  170. data/webby/output/css/blueprint/plugins/link-icons/icons/pdf.png +0 -0
  171. data/webby/output/css/blueprint/plugins/link-icons/icons/visited.png +0 -0
  172. data/webby/output/css/blueprint/plugins/link-icons/icons/xls.png +0 -0
  173. data/webby/output/css/blueprint/plugins/link-icons/readme.txt +18 -0
  174. data/webby/output/css/blueprint/plugins/link-icons/screen.css +40 -0
  175. data/webby/output/css/blueprint/plugins/rtl/readme.txt +10 -0
  176. data/webby/output/css/blueprint/plugins/rtl/screen.css +109 -0
  177. data/webby/output/css/blueprint/print.css +30 -0
  178. data/webby/output/css/blueprint/screen.css +251 -0
  179. data/webby/output/css/blueprint/src/forms.css +49 -0
  180. data/webby/output/css/blueprint/src/grid.css +212 -0
  181. data/webby/output/css/blueprint/src/grid.png +0 -0
  182. data/webby/output/css/blueprint/src/ie.css +59 -0
  183. data/webby/output/css/blueprint/src/print.css +85 -0
  184. data/webby/output/css/blueprint/src/reset.css +38 -0
  185. data/webby/output/css/blueprint/src/typography.css +105 -0
  186. data/webby/output/css/pygments.css +59 -0
  187. data/webby/output/css/site.css +62 -0
  188. data/webby/output/css/style.css +279 -0
  189. data/webby/output/examples/autoformat.png +0 -0
  190. data/webby/output/examples/autoformat.rb +32 -0
  191. data/webby/output/examples/autoformat.xls +0 -0
  192. data/webby/output/examples/borders.png +0 -0
  193. data/webby/output/examples/borders.rb +15 -0
  194. data/webby/output/examples/borders.xls +0 -0
  195. data/webby/output/examples/colours.png +0 -0
  196. data/webby/output/examples/colours.rb +23 -0
  197. data/webby/output/examples/colours.xls +0 -0
  198. data/webby/output/examples/data.png +0 -0
  199. data/webby/output/examples/data.rb +11 -0
  200. data/webby/output/examples/data.xls +0 -0
  201. data/webby/output/examples/formatting.png +0 -0
  202. data/webby/output/examples/formatting.rb +78 -0
  203. data/webby/output/examples/formatting.xls +0 -0
  204. data/webby/output/examples/hello-world.png +0 -0
  205. data/webby/output/examples/hello-world.py +8 -0
  206. data/webby/output/examples/hello-world.rb +9 -0
  207. data/webby/output/examples/hello-world.xls +0 -0
  208. data/webby/output/examples/number-format-string.png +0 -0
  209. data/webby/output/examples/number-format-string.rb +14 -0
  210. data/webby/output/examples/number-format-string.xls +0 -0
  211. data/webby/output/examples/patterns.png +0 -0
  212. data/webby/output/examples/patterns.rb +26 -0
  213. data/webby/output/examples/patterns.xls +0 -0
  214. data/webby/output/examples/show-greens.sh +1 -0
  215. data/webby/output/examples/surpass-info.sh +1 -0
  216. data/webby/output/img/Thumbs.db +0 -0
  217. data/webby/output/img/bg_menu.gif +0 -0
  218. data/webby/output/img/bg_t.gif +0 -0
  219. data/webby/output/img/bullet.gif +0 -0
  220. data/webby/output/img/logo.png +0 -0
  221. data/webby/output/img/logo_.jpg +0 -0
  222. data/webby/output/img/top_bg.gif +0 -0
  223. data/webby/output/img/top_bg_.gif +0 -0
  224. data/webby/output/index.html +138 -0
  225. data/webby/output/installation/index.html +64 -0
  226. data/webby/output/installation/installation.html +1 -0
  227. data/webby/output/installation.html +1 -0
  228. data/webby/output/source/ExcelFormulaLexer.html +981 -0
  229. data/webby/output/source/ExcelFormulaParser.html +661 -0
  230. data/webby/output/source/biff_record.html +462 -0
  231. data/webby/output/source/bitmap.html +277 -0
  232. data/webby/output/source/cell.html +241 -0
  233. data/webby/output/source/chart.html +64 -0
  234. data/webby/output/source/column.html +99 -0
  235. data/webby/output/source/document.html +465 -0
  236. data/webby/output/source/excel_formula.html +82 -0
  237. data/webby/output/source/excel_magic.html +1072 -0
  238. data/webby/output/source/formatting.html +664 -0
  239. data/webby/output/source/row.html +169 -0
  240. data/webby/output/source/style.html +158 -0
  241. data/webby/output/source/surpass.html +110 -0
  242. data/webby/output/source/utilities.html +145 -0
  243. data/webby/output/source/workbook.html +265 -0
  244. data/webby/output/source/worksheet.html +331 -0
  245. data/webby/output/surpass-manual-0-0-5.pdf +0 -0
  246. data/webby/output/surpass-manual.aux +50 -0
  247. data/webby/output/surpass-manual.log +366 -0
  248. data/webby/output/surpass-manual.out +20 -0
  249. data/webby/output/surpass-manual.tex +582 -0
  250. data/webby/output/surpass-manual.toc +20 -0
  251. data/webby/rsync-exclude +7 -0
  252. data/webby/tasks/latex.rake +14 -0
  253. data/webby/tasks/screenshots.rb +58 -0
  254. data/webby/templates/article.erb +15 -0
  255. data/webby/templates/book.erb +16 -0
  256. data/webby/templates/page.erb +9 -0
  257. metadata +302 -24
  258. data/bin/surpass-info +0 -20
  259. data/lib/excel_formula.rb +0 -6
@@ -0,0 +1,145 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2
+
3
+ <!-- ========================================================== -->
4
+ <!-- Created by Devit Schizoper -->
5
+ <!-- Created HomePages http://LoadFoo.starzonewebhost.com -->
6
+ <!-- Created Day 01.12.2006 -->
7
+ <!-- ========================================================== -->
8
+
9
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
10
+ <head>
11
+ <meta http-equiv="content-type" content="text/html;charset=utf-8" />
12
+ <meta name="author" content="LoadFoO" />
13
+ <meta name="description" content="Site description" />
14
+ <meta name="keywords" content="key, words" />
15
+ <title>Surpass :: utilities.rb</title>
16
+ <link rel="stylesheet" type="text/css" href="/css/style.css" media="screen" />
17
+ <link rel="stylesheet" href="/css/pygments.css" type="text/css" />
18
+ <link rel="shortcut icon" href="favicon.ico" />
19
+ </head>
20
+
21
+ <body>
22
+ <div id="wrap">
23
+ <div id="top">
24
+ <h2><a href="/" title="Back to main page">Surpass</a></h2>
25
+ <div id="menu">
26
+ <ul>
27
+ <li><a href="/installation">Installation</a></li>
28
+ <li><a href="/examples">Examples</a></li>
29
+ <li><a href="/source">Source</a></li>
30
+ </ul>
31
+ </div>
32
+ </div>
33
+ <div id="content">
34
+ <div id="left">
35
+ <h2>utilities.rb</h2>
36
+ <div class="highlight"><pre><span class="k">module</span> <span class="nn">Utilities</span>
37
+ <span class="c1"># For ease of comparing with pyExcelerator output values</span>
38
+ <span class="c1"># python seems to automatically decode to hex values</span>
39
+ <span class="k">def</span> <span class="nf">hex_array_to_binary_string</span><span class="p">(</span><span class="n">array_of_hex_values</span><span class="p">)</span>
40
+ <span class="o">[</span><span class="n">array_of_hex_values</span><span class="o">.</span><span class="n">collect</span> <span class="p">{</span><span class="o">|</span><span class="n">h</span><span class="o">|</span> <span class="o">[</span><span class="nb">sprintf</span><span class="p">(</span><span class="s2">&quot;%02x&quot;</span><span class="p">,</span> <span class="n">h</span><span class="p">)</span><span class="o">]</span><span class="p">}</span><span class="o">.</span><span class="n">join</span><span class="o">].</span><span class="n">pack</span><span class="p">(</span><span class="s1">&#39;H*&#39;</span><span class="p">)</span>
41
+ <span class="k">end</span>
42
+
43
+ <span class="k">def</span> <span class="nf">binary_string_to_hex_array</span><span class="p">(</span><span class="n">binary_string</span><span class="p">)</span>
44
+ <span class="n">binary_string</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s2">&quot;H*&quot;</span><span class="p">)</span>
45
+ <span class="k">end</span>
46
+
47
+ <span class="k">def</span> <span class="nf">points_to_pixels</span><span class="p">(</span><span class="n">points</span><span class="p">)</span>
48
+ <span class="n">points</span><span class="o">*</span><span class="p">(</span><span class="mi">4</span><span class="o">.</span><span class="mi">0</span><span class="o">/</span><span class="mi">3</span><span class="p">)</span>
49
+ <span class="k">end</span>
50
+
51
+ <span class="k">def</span> <span class="nf">pixels_to_points</span><span class="p">(</span><span class="n">pixels</span><span class="p">)</span>
52
+ <span class="n">pixels</span> <span class="o">*</span> <span class="p">(</span><span class="mi">3</span><span class="o">.</span><span class="mi">0</span> <span class="o">/</span> <span class="mi">4</span><span class="p">)</span>
53
+ <span class="k">end</span>
54
+
55
+ <span class="k">def</span> <span class="nf">twips_to_pixels</span><span class="p">(</span><span class="n">twips</span><span class="p">)</span>
56
+ <span class="n">twips</span> <span class="o">/</span> <span class="mi">15</span><span class="o">.</span><span class="mi">0</span>
57
+ <span class="k">end</span>
58
+
59
+ <span class="k">def</span> <span class="nf">pixels_to_twips</span><span class="p">(</span><span class="n">pixels</span><span class="p">)</span>
60
+ <span class="n">pixels</span> <span class="o">*</span> <span class="mi">15</span><span class="o">.</span><span class="mi">0</span>
61
+ <span class="k">end</span>
62
+
63
+ <span class="k">def</span> <span class="nf">as_excel_date</span><span class="p">(</span><span class="n">date</span><span class="p">)</span>
64
+ <span class="n">date</span> <span class="o">=</span> <span class="no">DateTime</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">&quot;%c&quot;</span><span class="p">))</span> <span class="k">if</span> <span class="n">date</span><span class="o">.</span><span class="n">is_a?</span><span class="p">(</span><span class="no">Time</span><span class="p">)</span>
65
+ <span class="n">excel_date</span> <span class="o">=</span> <span class="p">(</span><span class="n">date</span> <span class="o">-</span> <span class="no">Date</span><span class="o">.</span><span class="n">civil</span><span class="p">(</span><span class="mi">1899</span><span class="p">,</span> <span class="mi">12</span><span class="p">,</span> <span class="mi">31</span><span class="p">))</span><span class="o">.</span><span class="n">to_f</span>
66
+ <span class="n">excel_date</span> <span class="o">+=</span> <span class="mi">1</span> <span class="k">if</span> <span class="n">excel_date</span> <span class="o">&gt;</span> <span class="mi">59</span> <span class="c1"># Add a day for Excel&#39;s missing leap day in 1900</span>
67
+ <span class="n">excel_date</span>
68
+ <span class="k">end</span>
69
+
70
+ <span class="k">def</span> <span class="nf">mock_unicode_string</span><span class="p">(</span><span class="n">s</span><span class="p">)</span>
71
+ <span class="o">[</span><span class="n">s</span><span class="o">.</span><span class="n">length</span><span class="p">,</span> <span class="mi">0</span><span class="o">].</span><span class="n">pack</span><span class="p">(</span><span class="s1">&#39;vC&#39;</span><span class="p">)</span> <span class="o">+</span> <span class="n">s</span>
72
+ <span class="k">end</span>
73
+
74
+
75
+ <span class="k">def</span> <span class="nf">as_boolean</span><span class="p">(</span><span class="n">input</span><span class="p">)</span>
76
+ <span class="k">case</span> <span class="n">input</span>
77
+ <span class="k">when</span> <span class="mi">1</span><span class="p">,</span> <span class="kp">true</span>
78
+ <span class="kp">true</span>
79
+ <span class="k">when</span> <span class="mi">0</span><span class="p">,</span> <span class="kp">false</span>
80
+ <span class="kp">false</span>
81
+ <span class="k">else</span>
82
+ <span class="k">raise</span> <span class="s2">&quot;Can&#39;t convert </span><span class="si">#{</span><span class="n">input</span><span class="si">}</span><span class="s2"> from excel boolean!&quot;</span>
83
+ <span class="k">end</span>
84
+ <span class="k">end</span>
85
+
86
+ <span class="k">def</span> <span class="nf">as_numeric</span><span class="p">(</span><span class="n">input</span><span class="p">)</span>
87
+ <span class="k">case</span> <span class="n">input</span>
88
+ <span class="k">when</span> <span class="kp">true</span><span class="p">,</span> <span class="mi">1</span>
89
+ <span class="mi">1</span>
90
+ <span class="k">when</span> <span class="kp">false</span><span class="p">,</span> <span class="mi">0</span>
91
+ <span class="mi">0</span>
92
+ <span class="k">else</span>
93
+ <span class="k">raise</span> <span class="s2">&quot;Can&#39;t convert </span><span class="si">#{</span><span class="n">input</span><span class="si">}</span><span class="s2"> to excel boolean!&quot;</span>
94
+ <span class="k">end</span>
95
+ <span class="k">end</span>
96
+
97
+ <span class="c1"># Mimic python&#39;s &quot;hex&quot; function 0x00</span>
98
+ <span class="k">def</span> <span class="nf">hex</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
99
+ <span class="s2">&quot;0x&quot;</span> <span class="o">+</span> <span class="n">value</span><span class="o">.</span><span class="n">to_s</span><span class="p">(</span><span class="mi">16</span><span class="p">)</span>
100
+ <span class="k">end</span>
101
+ <span class="k">end</span>
102
+
103
+ <span class="k">def</span> <span class="nc">String</span><span class="o">.</span><span class="nf">random_alphanumeric</span><span class="p">(</span><span class="n">size</span><span class="o">=</span><span class="mi">16</span><span class="p">)</span>
104
+ <span class="n">s</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
105
+ <span class="n">size</span><span class="o">.</span><span class="n">times</span> <span class="p">{</span> <span class="n">s</span> <span class="o">&lt;&lt;</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="no">Kernel</span><span class="o">.</span><span class="n">rand</span><span class="p">(</span><span class="mi">62</span><span class="p">);</span> <span class="n">i</span> <span class="o">+=</span> <span class="p">((</span><span class="n">i</span> <span class="o">&lt;</span> <span class="mi">10</span><span class="p">)</span> <span class="p">?</span> <span class="mi">48</span> <span class="p">:</span> <span class="p">((</span><span class="n">i</span> <span class="o">&lt;</span> <span class="mi">36</span><span class="p">)</span> <span class="p">?</span> <span class="mi">55</span> <span class="p">:</span> <span class="mi">61</span> <span class="p">)))</span><span class="o">.</span><span class="n">chr</span> <span class="p">}</span>
106
+ <span class="n">s</span>
107
+ <span class="k">end</span>
108
+
109
+ <span class="k">class</span> <span class="nc">TrueClass</span>
110
+ <span class="k">def</span> <span class="nf">to_i</span>
111
+ <span class="mi">1</span>
112
+ <span class="k">end</span>
113
+ <span class="k">end</span>
114
+
115
+ <span class="k">class</span> <span class="nc">FalseClass</span>
116
+ <span class="k">def</span> <span class="nf">to_i</span>
117
+ <span class="mi">0</span>
118
+ <span class="k">end</span>
119
+ <span class="k">end</span>
120
+
121
+ <span class="kp">include</span> <span class="no">Utilities</span>
122
+ </pre></div>
123
+
124
+
125
+ </div>
126
+ <div id="right">
127
+ <ul id="nav">
128
+ <li><a href="surpass-manual-0-0-5.pdf">Download PDF Manual</a></li>
129
+ <li><a href="http://rubyforge.org/projects/surpass">Rubyforge Project Page</a></li>
130
+ </ul>
131
+ <div class="box">
132
+ <h2 style="margin-top:17px">Latest News</h2>
133
+ <ul>
134
+ <li>...</li>
135
+ </ul>
136
+ </div>
137
+ </div>
138
+ <div id="clear"></div></div>
139
+ <div id="footer">
140
+ <p>Site template designed by <a href="http://loadfoo.org/" rel="external">LoadFoO</a>. Valid <a href="http://jigsaw.w3.org/css-validator/check/referer" rel="external">CSS</a> &amp; <a href="http://validator.w3.org/check?uri=referer" rel="external">XHTML</a></p>
141
+ </div>
142
+ </div>
143
+
144
+ </body>
145
+ </html>
@@ -0,0 +1,265 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2
+
3
+ <!-- ========================================================== -->
4
+ <!-- Created by Devit Schizoper -->
5
+ <!-- Created HomePages http://LoadFoo.starzonewebhost.com -->
6
+ <!-- Created Day 01.12.2006 -->
7
+ <!-- ========================================================== -->
8
+
9
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
10
+ <head>
11
+ <meta http-equiv="content-type" content="text/html;charset=utf-8" />
12
+ <meta name="author" content="LoadFoO" />
13
+ <meta name="description" content="Site description" />
14
+ <meta name="keywords" content="key, words" />
15
+ <title>Surpass :: workbook.rb</title>
16
+ <link rel="stylesheet" type="text/css" href="/css/style.css" media="screen" />
17
+ <link rel="stylesheet" href="/css/pygments.css" type="text/css" />
18
+ <link rel="shortcut icon" href="favicon.ico" />
19
+ </head>
20
+
21
+ <body>
22
+ <div id="wrap">
23
+ <div id="top">
24
+ <h2><a href="/" title="Back to main page">Surpass</a></h2>
25
+ <div id="menu">
26
+ <ul>
27
+ <li><a href="/installation">Installation</a></li>
28
+ <li><a href="/examples">Examples</a></li>
29
+ <li><a href="/source">Source</a></li>
30
+ </ul>
31
+ </div>
32
+ </div>
33
+ <div id="content">
34
+ <div id="left">
35
+ <h2>workbook.rb</h2>
36
+ <div class="highlight"><pre><span class="k">class</span> <span class="nc">Workbook</span>
37
+ <span class="no">MACROS</span> <span class="o">=</span> <span class="p">{</span>
38
+ <span class="s1">&#39;Consolidate_Area&#39;</span> <span class="o">=&gt;</span> <span class="mh">0x00</span><span class="p">,</span>
39
+ <span class="s1">&#39;Auto_Open&#39;</span> <span class="o">=&gt;</span> <span class="mh">0x01</span><span class="p">,</span>
40
+ <span class="s1">&#39;Auto_Close&#39;</span> <span class="o">=&gt;</span> <span class="mh">0x02</span><span class="p">,</span>
41
+ <span class="s1">&#39;Extract&#39;</span> <span class="o">=&gt;</span> <span class="mh">0x03</span><span class="p">,</span>
42
+ <span class="s1">&#39;Database&#39;</span> <span class="o">=&gt;</span> <span class="mh">0x04</span><span class="p">,</span>
43
+ <span class="s1">&#39;Criteria&#39;</span> <span class="o">=&gt;</span> <span class="mh">0x05</span><span class="p">,</span>
44
+ <span class="s1">&#39;Print_Area&#39;</span> <span class="o">=&gt;</span> <span class="mh">0x06</span><span class="p">,</span>
45
+ <span class="s1">&#39;Print_Titles&#39;</span> <span class="o">=&gt;</span> <span class="mh">0x07</span><span class="p">,</span> <span class="c1"># in the docs it says Pint_Titles, I think its a mistake</span>
46
+ <span class="s1">&#39;Recorder&#39;</span> <span class="o">=&gt;</span> <span class="mh">0x08</span><span class="p">,</span>
47
+ <span class="s1">&#39;Data_Form&#39;</span> <span class="o">=&gt;</span> <span class="mh">0x09</span><span class="p">,</span>
48
+ <span class="s1">&#39;Auto_Activate&#39;</span> <span class="o">=&gt;</span> <span class="mh">0x0A</span><span class="p">,</span>
49
+ <span class="s1">&#39;Auto_Deactivate&#39;</span> <span class="o">=&gt;</span> <span class="mh">0x0B</span><span class="p">,</span>
50
+ <span class="s1">&#39;Sheet_Title&#39;</span> <span class="o">=&gt;</span> <span class="mh">0x0C</span><span class="p">,</span>
51
+ <span class="s1">&#39;_FilterDatabase&#39;</span> <span class="o">=&gt;</span> <span class="mh">0x0D</span>
52
+ <span class="p">}</span>
53
+
54
+ <span class="kp">attr_accessor</span> <span class="ss">:owner</span>
55
+ <span class="kp">attr_accessor</span> <span class="ss">:country_code</span>
56
+ <span class="kp">attr_accessor</span> <span class="ss">:wnd_protect</span>
57
+ <span class="kp">attr_accessor</span> <span class="ss">:obj_protect</span>
58
+ <span class="kp">attr_accessor</span> <span class="ss">:protect</span>
59
+ <span class="kp">attr_accessor</span> <span class="ss">:backup_on_save</span>
60
+ <span class="kp">attr_accessor</span> <span class="ss">:styles</span>
61
+ <span class="kp">attr_accessor</span> <span class="ss">:sst</span>
62
+
63
+ <span class="k">def</span> <span class="nf">hpos_twips</span><span class="o">=</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
64
+ <span class="vi">@hpos_twips</span> <span class="o">=</span> <span class="n">value</span> <span class="o">&amp;</span> <span class="mh">0xFFFF</span>
65
+ <span class="k">end</span>
66
+
67
+ <span class="kp">attr_reader</span> <span class="ss">:vpos_twips</span>
68
+ <span class="k">def</span> <span class="nf">vpos_twips</span><span class="o">=</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
69
+ <span class="vi">@vpos_twips</span> <span class="o">=</span> <span class="n">value</span> <span class="o">&amp;</span> <span class="mh">0xFFFF</span>
70
+ <span class="k">end</span>
71
+
72
+ <span class="kp">attr_reader</span> <span class="ss">:width_twips</span>
73
+ <span class="k">def</span> <span class="nf">width_twips</span><span class="o">=</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
74
+ <span class="vi">@width_twips</span> <span class="o">=</span> <span class="n">value</span> <span class="o">&amp;</span> <span class="mh">0xFFFF</span>
75
+ <span class="k">end</span>
76
+
77
+ <span class="kp">attr_reader</span> <span class="ss">:height_twips</span>
78
+ <span class="k">def</span> <span class="nf">height_twips</span><span class="o">=</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
79
+ <span class="vi">@height_twips</span> <span class="o">=</span> <span class="n">value</span> <span class="o">&amp;</span> <span class="mh">0xFFFF</span>
80
+ <span class="k">end</span>
81
+
82
+ <span class="kp">attr_reader</span> <span class="ss">:active_sheet</span>
83
+ <span class="k">def</span> <span class="nf">active_sheet</span><span class="o">=</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
84
+ <span class="vi">@active_sheet</span> <span class="o">=</span> <span class="n">value</span> <span class="o">&amp;</span> <span class="mh">0xFFFF</span>
85
+ <span class="vi">@first_tab_index</span> <span class="o">=</span> <span class="vi">@active_sheet</span>
86
+ <span class="k">end</span>
87
+
88
+ <span class="kp">attr_reader</span> <span class="ss">:tab_width_twips</span>
89
+ <span class="k">def</span> <span class="nf">tab_width_twips</span><span class="o">=</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
90
+ <span class="vi">@tab_width_twips</span> <span class="o">=</span> <span class="n">value</span> <span class="o">&amp;</span> <span class="mh">0xFFFF</span>
91
+ <span class="k">end</span>
92
+
93
+ <span class="kp">attr_reader</span> <span class="ss">:default_style</span>
94
+
95
+ <span class="k">def</span> <span class="nf">initialize</span><span class="p">(</span><span class="n">filename</span> <span class="o">=</span> <span class="kp">nil</span><span class="p">)</span>
96
+ <span class="vi">@owner</span> <span class="o">=</span> <span class="s1">&#39;None&#39;</span>
97
+ <span class="vi">@wnd_protect</span> <span class="o">=</span> <span class="mi">0</span>
98
+ <span class="vi">@obj_protect</span> <span class="o">=</span> <span class="mi">0</span>
99
+ <span class="vi">@protect</span> <span class="o">=</span> <span class="mi">0</span>
100
+ <span class="vi">@backup_on_save</span> <span class="o">=</span> <span class="mi">0</span>
101
+
102
+ <span class="vi">@hpos_twips</span> <span class="o">=</span> <span class="mh">0x01E0</span>
103
+ <span class="vi">@vpos_twips</span> <span class="o">=</span> <span class="mh">0x005A</span>
104
+ <span class="vi">@width_twips</span> <span class="o">=</span> <span class="mh">0x3FCF</span>
105
+ <span class="vi">@height_twips</span> <span class="o">=</span> <span class="mh">0x2A4E</span>
106
+
107
+ <span class="vi">@active_sheet</span> <span class="o">=</span> <span class="mi">0</span>
108
+ <span class="vi">@first_tab_index</span> <span class="o">=</span> <span class="mi">0</span>
109
+ <span class="vi">@selected_tabs</span> <span class="o">=</span> <span class="mh">0x01</span>
110
+ <span class="vi">@tab_width_twips</span> <span class="o">=</span> <span class="mh">0x0258</span>
111
+
112
+ <span class="vi">@wnd_hidden</span> <span class="o">=</span> <span class="kp">false</span>
113
+ <span class="vi">@wnd_mini</span> <span class="o">=</span> <span class="kp">false</span>
114
+ <span class="vi">@hscroll_visible</span> <span class="o">=</span> <span class="kp">true</span>
115
+ <span class="vi">@vscroll_visible</span> <span class="o">=</span> <span class="kp">true</span>
116
+ <span class="vi">@tabs_visible</span> <span class="o">=</span> <span class="kp">true</span>
117
+
118
+ <span class="vi">@styles</span> <span class="o">=</span> <span class="o">::</span><span class="no">StyleCollection</span><span class="o">.</span><span class="n">new</span>
119
+
120
+ <span class="vi">@dates_1904</span> <span class="o">=</span> <span class="kp">false</span>
121
+ <span class="vi">@use_cell_values</span> <span class="o">=</span> <span class="kp">true</span>
122
+
123
+ <span class="vi">@sst</span> <span class="o">=</span> <span class="no">SharedStringTable</span><span class="o">.</span><span class="n">new</span>
124
+
125
+ <span class="vi">@worksheets</span> <span class="o">=</span> <span class="o">[]</span>
126
+ <span class="vi">@names</span> <span class="o">=</span> <span class="o">[]</span>
127
+ <span class="vi">@refs</span> <span class="o">=</span> <span class="o">[]</span>
128
+
129
+ <span class="vi">@filename</span> <span class="o">=</span> <span class="n">filename</span>
130
+ <span class="k">end</span>
131
+
132
+ <span class="k">def</span> <span class="nf">add_sheet</span><span class="p">(</span><span class="nb">name</span> <span class="o">=</span> <span class="kp">nil</span><span class="p">)</span>
133
+ <span class="nb">name</span> <span class="o">||=</span> <span class="s2">&quot;Sheet</span><span class="si">#{</span><span class="vi">@worksheets</span><span class="o">.</span><span class="n">length</span> <span class="o">+</span> <span class="mi">1</span><span class="si">}</span><span class="s2">&quot;</span>
134
+ <span class="n">s</span> <span class="o">=</span> <span class="no">Worksheet</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="nb">name</span><span class="p">,</span> <span class="nb">self</span><span class="p">)</span>
135
+ <span class="vi">@worksheets</span> <span class="o">&lt;&lt;</span> <span class="n">s</span>
136
+ <span class="n">s</span>
137
+ <span class="k">end</span>
138
+
139
+ <span class="k">def</span> <span class="nf">print_area</span><span class="p">(</span><span class="n">sheetnum</span><span class="p">,</span> <span class="n">rstart</span><span class="p">,</span> <span class="n">rend</span><span class="p">,</span> <span class="n">cstart</span><span class="p">,</span> <span class="n">cend</span><span class="p">)</span>
140
+ <span class="k">if</span> <span class="o">!</span><span class="n">sheetnum</span><span class="o">.</span><span class="n">is_a?</span><span class="p">(</span><span class="nb">Integer</span><span class="p">)</span>
141
+ <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span>
142
+ <span class="vi">@worksheets</span><span class="o">.</span><span class="n">each_with_index</span> <span class="k">do</span> <span class="o">|</span><span class="n">w</span><span class="p">,</span> <span class="n">i</span><span class="o">|</span>
143
+ <span class="n">sheetnum</span> <span class="o">=</span> <span class="n">i</span><span class="o">+</span><span class="mi">1</span> <span class="k">if</span> <span class="n">w</span><span class="o">.</span><span class="n">name</span> <span class="o">===</span> <span class="n">sheetnum</span>
144
+ <span class="k">break</span> <span class="k">if</span> <span class="n">sheetnum</span><span class="o">.</span><span class="n">is_a?</span><span class="p">(</span><span class="nb">Integer</span><span class="p">)</span>
145
+ <span class="k">end</span>
146
+ <span class="k">end</span>
147
+
148
+ <span class="n">options</span> <span class="o">=</span> <span class="mh">0x0020</span> <span class="c1"># see Options Flags for Name record</span>
149
+
150
+ <span class="c1"># FIXME: this is just a bad hack, need to use Formula to make the rpn</span>
151
+ <span class="c1">#~ rpn = ExcelFormula.Formula(&#39;&#39;).rpn()[2:] # minus the size field</span>
152
+ <span class="n">rpn</span> <span class="o">=</span> <span class="o">[</span><span class="mh">0x3B</span><span class="p">,</span> <span class="mh">0x0000</span><span class="p">,</span> <span class="n">rstart</span><span class="p">,</span> <span class="n">rend</span><span class="p">,</span> <span class="n">cstart</span><span class="p">,</span> <span class="n">cend</span><span class="o">].</span><span class="n">pack</span><span class="p">(</span><span class="s1">&#39;Cv5&#39;</span><span class="p">)</span>
153
+ <span class="n">args</span> <span class="o">=</span> <span class="o">[</span><span class="n">options</span><span class="p">,</span> <span class="mh">0x00</span><span class="p">,</span> <span class="no">MACROS</span><span class="o">[</span><span class="s1">&#39;Print_Area&#39;</span><span class="o">]</span><span class="p">,</span> <span class="n">sheetnum</span><span class="p">,</span> <span class="n">rpn</span><span class="o">]</span>
154
+ <span class="vi">@names</span> <span class="o">&lt;&lt;</span> <span class="no">NameRecord</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">)</span><span class="o">.</span><span class="n">to_biff</span>
155
+ <span class="k">end</span>
156
+
157
+ <span class="k">def</span> <span class="nf">to_biff</span>
158
+ <span class="k">raise</span> <span class="s2">&quot;You cannot save a workbook with no worksheets&quot;</span> <span class="k">if</span> <span class="vi">@worksheets</span><span class="o">.</span><span class="n">empty?</span>
159
+
160
+ <span class="n">section_1_array</span> <span class="o">=</span> <span class="o">[]</span>
161
+ <span class="n">section_1_array</span> <span class="o">&lt;&lt;</span> <span class="no">Biff8BOFRecord</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="no">Biff8BOFRecord</span><span class="o">::</span><span class="no">BOOK_GLOBAL</span><span class="p">)</span><span class="o">.</span><span class="n">to_biff</span>
162
+ <span class="n">section_1_array</span> <span class="o">&lt;&lt;</span> <span class="no">InterfaceHeaderRecord</span><span class="o">.</span><span class="n">new</span><span class="o">.</span><span class="n">to_biff</span>
163
+ <span class="n">section_1_array</span> <span class="o">&lt;&lt;</span> <span class="no">MMSRecord</span><span class="o">.</span><span class="n">new</span><span class="o">.</span><span class="n">to_biff</span>
164
+ <span class="n">section_1_array</span> <span class="o">&lt;&lt;</span> <span class="no">InterfaceEndRecord</span><span class="o">.</span><span class="n">new</span><span class="o">.</span><span class="n">to_biff</span>
165
+ <span class="n">section_1_array</span> <span class="o">&lt;&lt;</span> <span class="no">WriteAccessRecord</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="n">owner</span><span class="p">)</span><span class="o">.</span><span class="n">to_biff</span>
166
+ <span class="n">section_1_array</span> <span class="o">&lt;&lt;</span> <span class="no">CodepageBiff8Record</span><span class="o">.</span><span class="n">new</span><span class="o">.</span><span class="n">to_biff</span>
167
+ <span class="n">section_1_array</span> <span class="o">&lt;&lt;</span> <span class="no">DSFRecord</span><span class="o">.</span><span class="n">new</span><span class="o">.</span><span class="n">to_biff</span>
168
+ <span class="n">section_1_array</span> <span class="o">&lt;&lt;</span> <span class="no">TabIDRecord</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="vi">@worksheets</span><span class="o">.</span><span class="n">length</span><span class="p">)</span><span class="o">.</span><span class="n">to_biff</span>
169
+ <span class="n">section_1_array</span> <span class="o">&lt;&lt;</span> <span class="no">FnGroupCountRecord</span><span class="o">.</span><span class="n">new</span><span class="o">.</span><span class="n">to_biff</span>
170
+ <span class="n">section_1_array</span> <span class="o">&lt;&lt;</span> <span class="no">WindowProtectRecord</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="n">as_numeric</span><span class="p">(</span><span class="vi">@wnd_protect</span><span class="p">))</span><span class="o">.</span><span class="n">to_biff</span>
171
+ <span class="n">section_1_array</span> <span class="o">&lt;&lt;</span> <span class="no">ProtectRecord</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="n">as_numeric</span><span class="p">(</span><span class="vi">@protect</span><span class="p">))</span><span class="o">.</span><span class="n">to_biff</span>
172
+ <span class="n">section_1_array</span> <span class="o">&lt;&lt;</span> <span class="no">ObjectProtectRecord</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="n">as_numeric</span><span class="p">(</span><span class="vi">@obj_protect</span><span class="p">))</span><span class="o">.</span><span class="n">to_biff</span>
173
+ <span class="n">section_1_array</span> <span class="o">&lt;&lt;</span> <span class="no">PasswordRecord</span><span class="o">.</span><span class="n">new</span><span class="o">.</span><span class="n">to_biff</span>
174
+ <span class="n">section_1_array</span> <span class="o">&lt;&lt;</span> <span class="no">Prot4RevRecord</span><span class="o">.</span><span class="n">new</span><span class="o">.</span><span class="n">to_biff</span>
175
+ <span class="n">section_1_array</span> <span class="o">&lt;&lt;</span> <span class="no">Prot4RevPassRecord</span><span class="o">.</span><span class="n">new</span><span class="o">.</span><span class="n">to_biff</span>
176
+ <span class="n">section_1_array</span> <span class="o">&lt;&lt;</span> <span class="no">BackupRecord</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="vi">@backup_on_save</span><span class="p">)</span><span class="o">.</span><span class="n">to_biff</span>
177
+ <span class="n">section_1_array</span> <span class="o">&lt;&lt;</span> <span class="no">HideObjRecord</span><span class="o">.</span><span class="n">new</span><span class="o">.</span><span class="n">to_biff</span>
178
+ <span class="n">section_1_array</span> <span class="o">&lt;&lt;</span> <span class="n">window_1_record</span>
179
+ <span class="n">section_1_array</span> <span class="o">&lt;&lt;</span> <span class="no">DateModeRecord</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="vi">@dates_1904</span><span class="p">)</span><span class="o">.</span><span class="n">to_biff</span>
180
+ <span class="n">section_1_array</span> <span class="o">&lt;&lt;</span> <span class="no">PrecisionRecord</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="vi">@use_cell_values</span><span class="p">)</span><span class="o">.</span><span class="n">to_biff</span>
181
+ <span class="n">section_1_array</span> <span class="o">&lt;&lt;</span> <span class="no">RefreshAllRecord</span><span class="o">.</span><span class="n">new</span><span class="o">.</span><span class="n">to_biff</span>
182
+ <span class="n">section_1_array</span> <span class="o">&lt;&lt;</span> <span class="no">BookBoolRecord</span><span class="o">.</span><span class="n">new</span><span class="o">.</span><span class="n">to_biff</span>
183
+ <span class="n">section_1_array</span> <span class="o">&lt;&lt;</span> <span class="vi">@styles</span><span class="o">.</span><span class="n">to_biff</span>
184
+ <span class="n">section_1_array</span> <span class="o">&lt;&lt;</span> <span class="s1">&#39;&#39;</span> <span class="c1"># Palette</span>
185
+ <span class="n">section_1_array</span> <span class="o">&lt;&lt;</span> <span class="no">UseSelfsRecord</span><span class="o">.</span><span class="n">new</span><span class="o">.</span><span class="n">to_biff</span>
186
+ <span class="n">section_1</span> <span class="o">=</span> <span class="n">section_1_array</span><span class="o">.</span><span class="n">join</span>
187
+
188
+ <span class="n">section_3_array</span> <span class="o">=</span> <span class="o">[]</span>
189
+ <span class="n">section_3_array</span> <span class="o">&lt;&lt;</span> <span class="no">CountryRecord</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="vi">@country_code</span><span class="p">,</span> <span class="vi">@country_code</span><span class="p">)</span><span class="o">.</span><span class="n">to_biff</span> <span class="k">unless</span> <span class="vi">@country_code</span><span class="o">.</span><span class="n">nil?</span>
190
+ <span class="c1"># section_3_array &lt;&lt; InternalReferenceSupBookRecord.new(@worksheets.length).to_biff</span>
191
+ <span class="c1"># section_3_array &lt;&lt; ExternSheetRecord.new(@refs).to_biff</span>
192
+ <span class="c1"># section_3_array &lt;&lt; @names.collect {|n| n.to_biff}.join</span>
193
+ <span class="n">section_3_array</span> <span class="o">&lt;&lt;</span> <span class="vi">@sst</span><span class="o">.</span><span class="n">to_biff</span>
194
+ <span class="n">section_3</span> <span class="o">=</span> <span class="n">section_3_array</span><span class="o">.</span><span class="n">join</span>
195
+
196
+ <span class="n">section_4</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span> <span class="c1"># ExtSSTRecord</span>
197
+ <span class="n">section_5</span> <span class="o">=</span> <span class="no">EOFRecord</span><span class="o">.</span><span class="n">new</span><span class="o">.</span><span class="n">to_biff</span>
198
+
199
+ <span class="vi">@worksheets</span><span class="o">[</span><span class="vi">@active_sheet</span><span class="o">].</span><span class="n">selected</span> <span class="o">=</span> <span class="kp">true</span>
200
+ <span class="n">worksheet_biff_data</span> <span class="o">=</span> <span class="vi">@worksheets</span><span class="o">.</span><span class="n">collect</span> <span class="p">{</span><span class="o">|</span><span class="n">w</span><span class="o">|</span> <span class="n">w</span><span class="o">.</span><span class="n">to_biff</span> <span class="p">}</span>
201
+ <span class="n">worksheet_biff_data_lengths</span> <span class="o">=</span> <span class="n">worksheet_biff_data</span><span class="o">.</span><span class="n">collect</span> <span class="p">{</span><span class="o">|</span><span class="n">w</span><span class="o">|</span> <span class="n">w</span><span class="o">.</span><span class="n">length</span> <span class="p">}</span>
202
+ <span class="n">section_6</span> <span class="o">=</span> <span class="n">worksheet_biff_data</span><span class="o">.</span><span class="n">join</span>
203
+
204
+ <span class="c1"># Need to know how long the bound sheet records will be</span>
205
+ <span class="n">boundsheet_data_lengths</span> <span class="o">=</span> <span class="vi">@worksheets</span><span class="o">.</span><span class="n">collect</span> <span class="p">{</span><span class="o">|</span><span class="n">w</span><span class="o">|</span> <span class="no">BoundSheetRecord</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="mh">0x00</span><span class="p">,</span> <span class="n">w</span><span class="o">.</span><span class="n">visibility</span><span class="p">,</span> <span class="n">w</span><span class="o">.</span><span class="n">name</span><span class="p">)</span><span class="o">.</span><span class="n">to_biff</span><span class="o">.</span><span class="n">length</span> <span class="p">}</span>
206
+ <span class="n">total_boundsheet_data_length</span> <span class="o">=</span> <span class="n">boundsheet_data_lengths</span><span class="o">.</span><span class="n">inject</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> <span class="p">{</span><span class="o">|</span><span class="n">sum</span><span class="p">,</span> <span class="n">l</span><span class="o">|</span> <span class="n">sum</span> <span class="o">+</span> <span class="n">l</span><span class="p">}</span>
207
+ <span class="n">start_position</span> <span class="o">=</span> <span class="n">section_1</span><span class="o">.</span><span class="n">length</span> <span class="o">+</span> <span class="n">total_boundsheet_data_length</span> <span class="o">+</span> <span class="n">section_3</span><span class="o">.</span><span class="n">length</span> <span class="o">+</span> <span class="n">section_4</span><span class="o">.</span><span class="n">length</span> <span class="o">+</span> <span class="n">section_5</span><span class="o">.</span><span class="n">length</span>
208
+
209
+ <span class="n">boundsheet_records</span> <span class="o">=</span> <span class="o">[]</span>
210
+ <span class="vi">@worksheets</span><span class="o">.</span><span class="n">each_with_index</span> <span class="k">do</span> <span class="o">|</span><span class="n">w</span><span class="p">,</span> <span class="n">i</span><span class="o">|</span>
211
+ <span class="n">boundsheet_records</span> <span class="o">&lt;&lt;</span> <span class="no">BoundSheetRecord</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="n">start_position</span><span class="p">,</span> <span class="n">w</span><span class="o">.</span><span class="n">visibility</span><span class="p">,</span> <span class="n">w</span><span class="o">.</span><span class="n">name</span><span class="p">)</span><span class="o">.</span><span class="n">to_biff</span>
212
+ <span class="n">start_position</span> <span class="o">+=</span> <span class="n">worksheet_biff_data_lengths</span><span class="o">[</span><span class="n">i</span><span class="o">]</span>
213
+ <span class="k">end</span>
214
+
215
+ <span class="n">section_2</span> <span class="o">=</span> <span class="n">boundsheet_records</span><span class="o">.</span><span class="n">join</span>
216
+ <span class="n">section_1</span> <span class="o">+</span> <span class="n">section_2</span> <span class="o">+</span> <span class="n">section_3</span> <span class="o">+</span> <span class="n">section_4</span> <span class="o">+</span> <span class="n">section_5</span> <span class="o">+</span> <span class="n">section_6</span>
217
+ <span class="k">end</span>
218
+
219
+ <span class="k">def</span> <span class="nf">window_1_record</span>
220
+ <span class="n">flags</span> <span class="o">=</span> <span class="mi">0</span>
221
+ <span class="n">flags</span> <span class="o">|=</span> <span class="p">(</span><span class="n">as_numeric</span><span class="p">(</span><span class="vi">@wnd_hidden</span><span class="p">))</span> <span class="o">&lt;&lt;</span> <span class="mi">0</span>
222
+ <span class="n">flags</span> <span class="o">|=</span> <span class="p">(</span><span class="n">as_numeric</span><span class="p">(</span><span class="vi">@wnd_mini</span><span class="p">))</span> <span class="o">&lt;&lt;</span> <span class="mi">1</span>
223
+ <span class="n">flags</span> <span class="o">|=</span> <span class="p">(</span><span class="n">as_numeric</span><span class="p">(</span><span class="vi">@hscroll_visible</span><span class="p">))</span> <span class="o">&lt;&lt;</span> <span class="mi">3</span>
224
+ <span class="n">flags</span> <span class="o">|=</span> <span class="p">(</span><span class="n">as_numeric</span><span class="p">(</span><span class="vi">@vscroll_visible</span><span class="p">))</span> <span class="o">&lt;&lt;</span> <span class="mi">4</span>
225
+ <span class="n">flags</span> <span class="o">|=</span> <span class="p">(</span><span class="n">as_numeric</span><span class="p">(</span><span class="vi">@tabs_visible</span><span class="p">))</span> <span class="o">&lt;&lt;</span> <span class="mi">5</span>
226
+
227
+ <span class="n">args</span> <span class="o">=</span> <span class="o">[</span><span class="vi">@hpos_twips</span><span class="p">,</span> <span class="vi">@vpos_twips</span><span class="p">,</span> <span class="vi">@width_twips</span><span class="p">,</span> <span class="vi">@height_twips</span><span class="p">,</span> <span class="n">flags</span><span class="p">,</span> <span class="vi">@active_sheet</span><span class="p">,</span> <span class="vi">@first_tab_index</span><span class="p">,</span> <span class="vi">@selected_tabs</span><span class="p">,</span> <span class="vi">@tab_width_twips</span><span class="o">]</span>
228
+ <span class="no">Window1Record</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">)</span><span class="o">.</span><span class="n">to_biff</span>
229
+ <span class="k">end</span>
230
+
231
+ <span class="k">def</span> <span class="nf">data</span>
232
+ <span class="n">doc</span> <span class="o">=</span> <span class="no">ExcelDocument</span><span class="o">.</span><span class="n">new</span>
233
+ <span class="n">doc</span><span class="o">.</span><span class="n">data</span><span class="p">(</span><span class="n">to_biff</span><span class="p">)</span><span class="o">.</span><span class="n">read</span>
234
+ <span class="k">end</span>
235
+
236
+ <span class="k">def</span> <span class="nf">save</span><span class="p">(</span><span class="n">filename</span> <span class="o">=</span> <span class="kp">nil</span><span class="p">)</span>
237
+ <span class="vi">@filename</span> <span class="o">=</span> <span class="n">filename</span> <span class="k">unless</span> <span class="n">filename</span><span class="o">.</span><span class="n">nil?</span>
238
+ <span class="n">doc</span> <span class="o">=</span> <span class="no">ExcelDocument</span><span class="o">.</span><span class="n">new</span>
239
+ <span class="n">doc</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="vi">@filename</span><span class="p">,</span> <span class="n">to_biff</span><span class="p">)</span>
240
+ <span class="k">end</span>
241
+ <span class="k">end</span>
242
+ </pre></div>
243
+
244
+
245
+ </div>
246
+ <div id="right">
247
+ <ul id="nav">
248
+ <li><a href="surpass-manual-0-0-5.pdf">Download PDF Manual</a></li>
249
+ <li><a href="http://rubyforge.org/projects/surpass">Rubyforge Project Page</a></li>
250
+ </ul>
251
+ <div class="box">
252
+ <h2 style="margin-top:17px">Latest News</h2>
253
+ <ul>
254
+ <li>...</li>
255
+ </ul>
256
+ </div>
257
+ </div>
258
+ <div id="clear"></div></div>
259
+ <div id="footer">
260
+ <p>Site template designed by <a href="http://loadfoo.org/" rel="external">LoadFoO</a>. Valid <a href="http://jigsaw.w3.org/css-validator/check/referer" rel="external">CSS</a> &amp; <a href="http://validator.w3.org/check?uri=referer" rel="external">XHTML</a></p>
261
+ </div>
262
+ </div>
263
+
264
+ </body>
265
+ </html>