rubyfromexcel 0.0.4

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 (188) hide show
  1. data/README +22 -0
  2. data/bin/rubyfromexcel +20 -0
  3. data/examples/create_and_test_examples.rb +37 -0
  4. data/examples/ruby-versions/array-formulas-ruby/sheets/sheet1.rb +59 -0
  5. data/examples/ruby-versions/array-formulas-ruby/sheets/sheet2.rb +9 -0
  6. data/examples/ruby-versions/array-formulas-ruby/specs/sheet1_rspec.rb +156 -0
  7. data/examples/ruby-versions/array-formulas-ruby/specs/sheet2_rspec.rb +8 -0
  8. data/examples/ruby-versions/array-formulas-ruby/spreadsheet.rb +9 -0
  9. data/examples/ruby-versions/complex-test-ruby/sheets/sheet1.rb +305 -0
  10. data/examples/ruby-versions/complex-test-ruby/sheets/sheet2.rb +147 -0
  11. data/examples/ruby-versions/complex-test-ruby/specs/sheet1_rspec.rb +876 -0
  12. data/examples/ruby-versions/complex-test-ruby/specs/sheet2_rspec.rb +412 -0
  13. data/examples/ruby-versions/complex-test-ruby/spreadsheet.rb +9 -0
  14. data/examples/ruby-versions/namedReferenceTest-ruby/sheets/sheet1.rb +9 -0
  15. data/examples/ruby-versions/namedReferenceTest-ruby/sheets/sheet2.rb +8 -0
  16. data/examples/ruby-versions/namedReferenceTest-ruby/specs/sheet1_rspec.rb +16 -0
  17. data/examples/ruby-versions/namedReferenceTest-ruby/specs/sheet2_rspec.rb +16 -0
  18. data/examples/ruby-versions/namedReferenceTest-ruby/spreadsheet.rb +9 -0
  19. data/examples/ruby-versions/pruning-ruby/sheets/sheet1.rb +11 -0
  20. data/examples/ruby-versions/pruning-ruby/sheets/sheet2.rb +14 -0
  21. data/examples/ruby-versions/pruning-ruby/sheets/sheet3.rb +7 -0
  22. data/examples/ruby-versions/pruning-ruby/specs/sheet1_rspec.rb +20 -0
  23. data/examples/ruby-versions/pruning-ruby/specs/sheet2_rspec.rb +20 -0
  24. data/examples/ruby-versions/pruning-ruby/specs/sheet3_rspec.rb +8 -0
  25. data/examples/ruby-versions/pruning-ruby/spreadsheet.rb +9 -0
  26. data/examples/ruby-versions/sharedFormulaTest-ruby/sheets/sheet1.rb +15 -0
  27. data/examples/ruby-versions/sharedFormulaTest-ruby/specs/sheet1_rspec.rb +44 -0
  28. data/examples/ruby-versions/sharedFormulaTest-ruby/spreadsheet.rb +9 -0
  29. data/examples/ruby-versions/table-test-ruby/sheets/sheet1.rb +17 -0
  30. data/examples/ruby-versions/table-test-ruby/sheets/sheet2.rb +5 -0
  31. data/examples/ruby-versions/table-test-ruby/sheets/sheet3.rb +5 -0
  32. data/examples/ruby-versions/table-test-ruby/specs/sheet1_rspec.rb +20 -0
  33. data/examples/ruby-versions/table-test-ruby/specs/sheet2_rspec.rb +8 -0
  34. data/examples/ruby-versions/table-test-ruby/specs/sheet3_rspec.rb +8 -0
  35. data/examples/ruby-versions/table-test-ruby/spreadsheet.rb +9 -0
  36. data/examples/sheets/array-formulas.xlsx +0 -0
  37. data/examples/sheets/complex-test.xlsx +0 -0
  38. data/examples/sheets/namedReferenceTest.xlsx +0 -0
  39. data/examples/sheets/pruning.xlsx +0 -0
  40. data/examples/sheets/sharedFormulaTest.xlsx +0 -0
  41. data/examples/sheets/table-test.xlsx +0 -0
  42. data/examples/sheets/~$array-formulas.xlsx +0 -0
  43. data/examples/unzipped-sheets/array-formulas/[Content_Types].xml +2 -0
  44. data/examples/unzipped-sheets/array-formulas/docProps/app.xml +2 -0
  45. data/examples/unzipped-sheets/array-formulas/docProps/core.xml +2 -0
  46. data/examples/unzipped-sheets/array-formulas/docProps/thumbnail.jpeg +0 -0
  47. data/examples/unzipped-sheets/array-formulas/xl/_rels/workbook.xml.rels +2 -0
  48. data/examples/unzipped-sheets/array-formulas/xl/calcChain.xml +2 -0
  49. data/examples/unzipped-sheets/array-formulas/xl/sharedStrings.xml +2 -0
  50. data/examples/unzipped-sheets/array-formulas/xl/styles.xml +2 -0
  51. data/examples/unzipped-sheets/array-formulas/xl/theme/theme1.xml +2 -0
  52. data/examples/unzipped-sheets/array-formulas/xl/workbook.xml +2 -0
  53. data/examples/unzipped-sheets/array-formulas/xl/worksheets/sheet1.xml +2 -0
  54. data/examples/unzipped-sheets/array-formulas/xl/worksheets/sheet2.xml +2 -0
  55. data/examples/unzipped-sheets/complex-test/[Content_Types].xml +2 -0
  56. data/examples/unzipped-sheets/complex-test/docProps/app.xml +2 -0
  57. data/examples/unzipped-sheets/complex-test/docProps/core.xml +2 -0
  58. data/examples/unzipped-sheets/complex-test/xl/_rels/workbook.xml.rels +2 -0
  59. data/examples/unzipped-sheets/complex-test/xl/calcChain.xml +2 -0
  60. data/examples/unzipped-sheets/complex-test/xl/charts/chart1.xml +2 -0
  61. data/examples/unzipped-sheets/complex-test/xl/charts/chart2.xml +2 -0
  62. data/examples/unzipped-sheets/complex-test/xl/comments1.xml +5 -0
  63. data/examples/unzipped-sheets/complex-test/xl/comments2.xml +5 -0
  64. data/examples/unzipped-sheets/complex-test/xl/drawings/_rels/drawing1.xml.rels +2 -0
  65. data/examples/unzipped-sheets/complex-test/xl/drawings/_rels/drawing2.xml.rels +2 -0
  66. data/examples/unzipped-sheets/complex-test/xl/drawings/drawing1.xml +2 -0
  67. data/examples/unzipped-sheets/complex-test/xl/drawings/drawing2.xml +2 -0
  68. data/examples/unzipped-sheets/complex-test/xl/drawings/vmlDrawing1.vml +46 -0
  69. data/examples/unzipped-sheets/complex-test/xl/drawings/vmlDrawing2.vml +46 -0
  70. data/examples/unzipped-sheets/complex-test/xl/sharedStrings.xml +2 -0
  71. data/examples/unzipped-sheets/complex-test/xl/styles.xml +2 -0
  72. data/examples/unzipped-sheets/complex-test/xl/theme/theme1.xml +2 -0
  73. data/examples/unzipped-sheets/complex-test/xl/workbook.xml +2 -0
  74. data/examples/unzipped-sheets/complex-test/xl/worksheets/_rels/sheet1.xml.rels +2 -0
  75. data/examples/unzipped-sheets/complex-test/xl/worksheets/_rels/sheet2.xml.rels +2 -0
  76. data/examples/unzipped-sheets/complex-test/xl/worksheets/sheet1.xml +2 -0
  77. data/examples/unzipped-sheets/complex-test/xl/worksheets/sheet2.xml +2 -0
  78. data/examples/unzipped-sheets/namedReferenceTest/[Content_Types].xml +2 -0
  79. data/examples/unzipped-sheets/namedReferenceTest/docProps/app.xml +2 -0
  80. data/examples/unzipped-sheets/namedReferenceTest/docProps/core.xml +2 -0
  81. data/examples/unzipped-sheets/namedReferenceTest/docProps/thumbnail.jpeg +0 -0
  82. data/examples/unzipped-sheets/namedReferenceTest/xl/_rels/workbook.xml.rels +2 -0
  83. data/examples/unzipped-sheets/namedReferenceTest/xl/calcChain.xml +2 -0
  84. data/examples/unzipped-sheets/namedReferenceTest/xl/styles.xml +2 -0
  85. data/examples/unzipped-sheets/namedReferenceTest/xl/theme/theme1.xml +2 -0
  86. data/examples/unzipped-sheets/namedReferenceTest/xl/workbook.xml +2 -0
  87. data/examples/unzipped-sheets/namedReferenceTest/xl/worksheets/sheet1.xml +2 -0
  88. data/examples/unzipped-sheets/namedReferenceTest/xl/worksheets/sheet2.xml +2 -0
  89. data/examples/unzipped-sheets/pruning/[Content_Types].xml +2 -0
  90. data/examples/unzipped-sheets/pruning/docProps/app.xml +2 -0
  91. data/examples/unzipped-sheets/pruning/docProps/core.xml +2 -0
  92. data/examples/unzipped-sheets/pruning/docProps/thumbnail.jpeg +0 -0
  93. data/examples/unzipped-sheets/pruning/xl/_rels/workbook.xml.rels +2 -0
  94. data/examples/unzipped-sheets/pruning/xl/calcChain.xml +2 -0
  95. data/examples/unzipped-sheets/pruning/xl/sharedStrings.xml +2 -0
  96. data/examples/unzipped-sheets/pruning/xl/styles.xml +2 -0
  97. data/examples/unzipped-sheets/pruning/xl/theme/theme1.xml +2 -0
  98. data/examples/unzipped-sheets/pruning/xl/workbook.xml +2 -0
  99. data/examples/unzipped-sheets/pruning/xl/worksheets/sheet1.xml +2 -0
  100. data/examples/unzipped-sheets/pruning/xl/worksheets/sheet2.xml +2 -0
  101. data/examples/unzipped-sheets/pruning/xl/worksheets/sheet3.xml +2 -0
  102. data/examples/unzipped-sheets/sharedFormulaTest/[Content_Types].xml +2 -0
  103. data/examples/unzipped-sheets/sharedFormulaTest/docProps/app.xml +2 -0
  104. data/examples/unzipped-sheets/sharedFormulaTest/docProps/core.xml +2 -0
  105. data/examples/unzipped-sheets/sharedFormulaTest/docProps/thumbnail.jpeg +0 -0
  106. data/examples/unzipped-sheets/sharedFormulaTest/xl/_rels/workbook.xml.rels +2 -0
  107. data/examples/unzipped-sheets/sharedFormulaTest/xl/calcChain.xml +2 -0
  108. data/examples/unzipped-sheets/sharedFormulaTest/xl/styles.xml +2 -0
  109. data/examples/unzipped-sheets/sharedFormulaTest/xl/theme/theme1.xml +2 -0
  110. data/examples/unzipped-sheets/sharedFormulaTest/xl/workbook.xml +2 -0
  111. data/examples/unzipped-sheets/sharedFormulaTest/xl/worksheets/sheet1.xml +2 -0
  112. data/examples/unzipped-sheets/table-test/[Content_Types].xml +2 -0
  113. data/examples/unzipped-sheets/table-test/docProps/app.xml +2 -0
  114. data/examples/unzipped-sheets/table-test/docProps/core.xml +2 -0
  115. data/examples/unzipped-sheets/table-test/xl/_rels/workbook.xml.rels +2 -0
  116. data/examples/unzipped-sheets/table-test/xl/calcChain.xml +2 -0
  117. data/examples/unzipped-sheets/table-test/xl/printerSettings/printerSettings1.bin +0 -0
  118. data/examples/unzipped-sheets/table-test/xl/sharedStrings.xml +2 -0
  119. data/examples/unzipped-sheets/table-test/xl/styles.xml +2 -0
  120. data/examples/unzipped-sheets/table-test/xl/tables/table1.xml +2 -0
  121. data/examples/unzipped-sheets/table-test/xl/theme/theme1.xml +2 -0
  122. data/examples/unzipped-sheets/table-test/xl/workbook.xml +2 -0
  123. data/examples/unzipped-sheets/table-test/xl/worksheets/_rels/sheet1.xml.rels +2 -0
  124. data/examples/unzipped-sheets/table-test/xl/worksheets/sheet1.xml +2 -0
  125. data/examples/unzipped-sheets/table-test/xl/worksheets/sheet2.xml +2 -0
  126. data/examples/unzipped-sheets/table-test/xl/worksheets/sheet3.xml +2 -0
  127. data/lib/cells/array/array_formula_builder.rb +58 -0
  128. data/lib/cells/array/array_formula_cell.rb +27 -0
  129. data/lib/cells/array/arraying_formula_cell.rb +67 -0
  130. data/lib/cells/array/single_cell_array_formula_builder.rb +9 -0
  131. data/lib/cells/array/single_cell_array_formula_cell.rb +11 -0
  132. data/lib/cells/cell.rb +98 -0
  133. data/lib/cells/cells.rb +9 -0
  134. data/lib/cells/formula/formula_cell.rb +18 -0
  135. data/lib/cells/formula/simple_formula_cell.rb +4 -0
  136. data/lib/cells/shared/shared_formula_builder.rb +15 -0
  137. data/lib/cells/shared/shared_formula_cell.rb +20 -0
  138. data/lib/cells/shared/sharing_formula_cell.rb +36 -0
  139. data/lib/cells/value/value_cell.rb +24 -0
  140. data/lib/excelfile/excelfile.rb +6 -0
  141. data/lib/excelfile/relationships.rb +24 -0
  142. data/lib/excelfile/shared_strings.rb +21 -0
  143. data/lib/excelfile/sheet_names.rb +6 -0
  144. data/lib/excelfile/table.rb +116 -0
  145. data/lib/excelfile/workbook.rb +108 -0
  146. data/lib/excelfile/worksheet.rb +122 -0
  147. data/lib/formulae/compile/formula_builder.rb +316 -0
  148. data/lib/formulae/formulae.rb +6 -0
  149. data/lib/formulae/parse/formula_peg.rb +213 -0
  150. data/lib/formulae/parse/formula_peg.txt +40 -0
  151. data/lib/formulae/run/excel_functions.rb +375 -0
  152. data/lib/formulae/run/excel_matrix.rb +114 -0
  153. data/lib/formulae/run/excel_range.rb +256 -0
  154. data/lib/formulae/run/reference.rb +79 -0
  155. data/lib/optimiser/dependency_builder.rb +86 -0
  156. data/lib/optimiser/optimiser.rb +3 -0
  157. data/lib/optimiser/shared_formula_dependency_builder.rb +43 -0
  158. data/lib/optimiser/workbook_pruner.rb +80 -0
  159. data/lib/rubyfromexcel.rb +105 -0
  160. data/lib/runtime/runtime_formula_builder.rb +32 -0
  161. data/spec/array_formula_builder_spec.rb +35 -0
  162. data/spec/array_formula_cell_spec.rb +17 -0
  163. data/spec/arraying_formula_cell_spec.rb +38 -0
  164. data/spec/dependency_builder_spec.rb +71 -0
  165. data/spec/excel_functions_spec.rb +381 -0
  166. data/spec/excel_matrix_spec.rb +92 -0
  167. data/spec/excel_range_spec.rb +161 -0
  168. data/spec/formula_builder_spec.rb +230 -0
  169. data/spec/formula_peg_spec.rb +165 -0
  170. data/spec/reference_spec.rb +72 -0
  171. data/spec/relationships_spec.rb +51 -0
  172. data/spec/runtime_formula_builder_spec.rb +55 -0
  173. data/spec/shared_formula_builder_spec.rb +29 -0
  174. data/spec/shared_formula_cell_spec.rb +23 -0
  175. data/spec/shared_formula_dependency_builder_spec.rb +48 -0
  176. data/spec/shared_strings_spec.rb +14 -0
  177. data/spec/sharing_formula_cell_spec.rb +79 -0
  178. data/spec/simple_formula_cell_spec.rb +78 -0
  179. data/spec/single_cell_array_formula_builder_spec.rb +19 -0
  180. data/spec/single_cell_array_formula_cell_spec.rb +25 -0
  181. data/spec/spec_helper.rb +2 -0
  182. data/spec/table_spec.rb +100 -0
  183. data/spec/value_cell_spec.rb +49 -0
  184. data/spec/workbook_pruner_spec.rb +27 -0
  185. data/spec/workbook_spec.rb +283 -0
  186. data/spec/worksheet_failiures_spec.rb +41 -0
  187. data/spec/worksheet_spec.rb +486 -0
  188. metadata +291 -0
@@ -0,0 +1,412 @@
1
+ # coding: utf-8
2
+ require_relative '../spreadsheet'
3
+ # OLD UK
4
+ describe 'Sheet2' do
5
+ def sheet2; $spreadsheet ||= Spreadsheet.new; $spreadsheet.sheet2; end
6
+
7
+ it 'cell d5 should equal 160.40945' do
8
+ sheet2.d5.should be_close(160.40945,16.040945)
9
+ end
10
+
11
+ it 'cell e5 should equal 157.61832557' do
12
+ sheet2.e5.should be_close(157.61832557,15.761832557)
13
+ end
14
+
15
+ it 'cell f5 should equal 154.875766705082' do
16
+ sheet2.f5.should be_close(154.875766705082,15.4875766705082)
17
+ end
18
+
19
+ it 'cell g5 should equal 152.180928364414' do
20
+ sheet2.g5.should be_close(152.180928364414,15.2180928364414)
21
+ end
22
+
23
+ it 'cell h5 should equal 149.532980210873' do
24
+ sheet2.h5.should be_close(149.532980210873,14.9532980210873)
25
+ end
26
+
27
+ it 'cell i5 should equal 146.931106355204' do
28
+ sheet2.i5.should be_close(146.931106355204,14.6931106355204)
29
+ end
30
+
31
+ it 'cell j5 should equal 144.374505104623' do
32
+ sheet2.j5.should be_close(144.374505104623,14.4374505104623)
33
+ end
34
+
35
+ it 'cell c6 should equal 134.166975' do
36
+ sheet2.c6.should be_close(134.166975,13.4166975)
37
+ end
38
+
39
+ it 'cell d6 should equal 131.832469635' do
40
+ sheet2.d6.should be_close(131.832469635,13.1832469635)
41
+ end
42
+
43
+ it 'cell e6 should equal 129.538584663351' do
44
+ sheet2.e6.should be_close(129.538584663351,12.9538584663351)
45
+ end
46
+
47
+ it 'cell f6 should equal 127.284613290209' do
48
+ sheet2.f6.should be_close(127.284613290209,12.7284613290209)
49
+ end
50
+
51
+ it 'cell g6 should equal 125.069861018959' do
52
+ sheet2.g6.should be_close(125.069861018959,12.5069861018959)
53
+ end
54
+
55
+ it 'cell h6 should equal 122.893645437229' do
56
+ sheet2.h6.should be_close(122.893645437229,12.2893645437229)
57
+ end
58
+
59
+ it 'cell i6 should equal 120.755296006621' do
60
+ sheet2.i6.should be_close(120.755296006621,12.0755296006621)
61
+ end
62
+
63
+ it 'cell j6 should equal 118.654153856106' do
64
+ sheet2.j6.should be_close(118.654153856106,11.8654153856106)
65
+ end
66
+
67
+ it 'cell l6 should equal 0.0174000000000001' do
68
+ sheet2.l6.should be_close(0.0174000000000001,0.00174000000000001)
69
+ end
70
+
71
+ it 'cell c7 should equal 297.416975' do
72
+ sheet2.c7.should be_close(297.416975,29.7416975)
73
+ end
74
+
75
+ it 'cell d7 should equal 292.241919635' do
76
+ sheet2.d7.should be_close(292.241919635,29.2241919635)
77
+ end
78
+
79
+ it 'cell e7 should equal 287.156910233351' do
80
+ sheet2.e7.should be_close(287.156910233351,28.7156910233351)
81
+ end
82
+
83
+ it 'cell f7 should equal 282.160379995291' do
84
+ sheet2.f7.should be_close(282.160379995291,28.2160379995291)
85
+ end
86
+
87
+ it 'cell g7 should equal 277.250789383373' do
88
+ sheet2.g7.should be_close(277.250789383373,27.7250789383373)
89
+ end
90
+
91
+ it 'cell h7 should equal 272.426625648102' do
92
+ sheet2.h7.should be_close(272.426625648102,27.2426625648102)
93
+ end
94
+
95
+ it 'cell i7 should equal 267.686402361825' do
96
+ sheet2.i7.should be_close(267.686402361825,26.7686402361825)
97
+ end
98
+
99
+ it 'cell j7 should equal 263.028658960729' do
100
+ sheet2.j7.should be_close(263.028658960729,26.3028658960729)
101
+ end
102
+
103
+ it 'cell c9 should equal 2013.0' do
104
+ sheet2.c9.should be_close(2013.0,201.3)
105
+ end
106
+
107
+ it 'cell d9 should equal 2014.0' do
108
+ sheet2.d9.should be_close(2014.0,201.4)
109
+ end
110
+
111
+ it 'cell e9 should equal 2015.0' do
112
+ sheet2.e9.should be_close(2015.0,201.5)
113
+ end
114
+
115
+ it 'cell f9 should equal 2016.0' do
116
+ sheet2.f9.should be_close(2016.0,201.6)
117
+ end
118
+
119
+ it 'cell g9 should equal 2017.0' do
120
+ sheet2.g9.should be_close(2017.0,201.7)
121
+ end
122
+
123
+ it 'cell h9 should equal 2018.0' do
124
+ sheet2.h9.should be_close(2018.0,201.8)
125
+ end
126
+
127
+ it 'cell i9 should equal 2019.0' do
128
+ sheet2.i9.should be_close(2019.0,201.9)
129
+ end
130
+
131
+ it 'cell j9 should equal 2020.0' do
132
+ sheet2.j9.should be_close(2020.0,202.0)
133
+ end
134
+
135
+ it 'cell d10 should equal 1.0' do
136
+ sheet2.d10.should be_close(1.0,0.1)
137
+ end
138
+
139
+ it 'cell e10 should equal 1.0' do
140
+ sheet2.e10.should be_close(1.0,0.1)
141
+ end
142
+
143
+ it 'cell f10 should equal 1.0' do
144
+ sheet2.f10.should be_close(1.0,0.1)
145
+ end
146
+
147
+ it 'cell g10 should equal 1.0' do
148
+ sheet2.g10.should be_close(1.0,0.1)
149
+ end
150
+
151
+ it 'cell h10 should equal 1.0' do
152
+ sheet2.h10.should be_close(1.0,0.1)
153
+ end
154
+
155
+ it 'cell i10 should equal 1.0' do
156
+ sheet2.i10.should be_close(1.0,0.1)
157
+ end
158
+
159
+ it 'cell j10 should equal 1.0' do
160
+ sheet2.j10.should be_close(1.0,0.1)
161
+ end
162
+
163
+ it 'cell d11 should equal 0.314285714285714' do
164
+ sheet2.d11.should be_close(0.314285714285714,0.0314285714285714)
165
+ end
166
+
167
+ it 'cell e11 should equal 0.428571428571429' do
168
+ sheet2.e11.should be_close(0.428571428571429,0.0428571428571429)
169
+ end
170
+
171
+ it 'cell f11 should equal 0.542857142857143' do
172
+ sheet2.f11.should be_close(0.542857142857143,0.0542857142857143)
173
+ end
174
+
175
+ it 'cell g11 should equal 0.657142857142857' do
176
+ sheet2.g11.should be_close(0.657142857142857,0.0657142857142857)
177
+ end
178
+
179
+ it 'cell h11 should equal 0.771428571428572' do
180
+ sheet2.h11.should be_close(0.771428571428572,0.0771428571428572)
181
+ end
182
+
183
+ it 'cell i11 should equal 0.885714285714286' do
184
+ sheet2.i11.should be_close(0.885714285714286,0.0885714285714286)
185
+ end
186
+
187
+ it 'cell l11 should equal 0.114285714285714' do
188
+ sheet2.l11.should be_close(0.114285714285714,0.0114285714285714)
189
+ end
190
+
191
+ it 'cell c12 should equal 0.639114142694781' do
192
+ sheet2.c12.should be_close(0.639114142694781,0.0639114142694781)
193
+ end
194
+
195
+ it 'cell d12 should equal 0.690669265166955' do
196
+ sheet2.d12.should be_close(0.690669265166955,0.0690669265166955)
197
+ end
198
+
199
+ it 'cell e12 should equal 0.742224387639129' do
200
+ sheet2.e12.should be_close(0.742224387639129,0.0742224387639129)
201
+ end
202
+
203
+ it 'cell f12 should equal 0.793779510111303' do
204
+ sheet2.f12.should be_close(0.793779510111303,0.0793779510111303)
205
+ end
206
+
207
+ it 'cell g12 should equal 0.845334632583478' do
208
+ sheet2.g12.should be_close(0.845334632583478,0.0845334632583478)
209
+ end
210
+
211
+ it 'cell h12 should equal 0.896889755055652' do
212
+ sheet2.h12.should be_close(0.896889755055652,0.0896889755055652)
213
+ end
214
+
215
+ it 'cell i12 should equal 0.948444877527826' do
216
+ sheet2.i12.should be_close(0.948444877527826,0.0948444877527826)
217
+ end
218
+
219
+ it 'cell j12 should equal 1.0' do
220
+ sheet2.j12.should be_close(1.0,0.1)
221
+ end
222
+
223
+ it 'cell c14 should equal 2013.0' do
224
+ sheet2.c14.should be_close(2013.0,201.3)
225
+ end
226
+
227
+ it 'cell d14 should equal 2014.0' do
228
+ sheet2.d14.should be_close(2014.0,201.4)
229
+ end
230
+
231
+ it 'cell e14 should equal 2015.0' do
232
+ sheet2.e14.should be_close(2015.0,201.5)
233
+ end
234
+
235
+ it 'cell f14 should equal 2016.0' do
236
+ sheet2.f14.should be_close(2016.0,201.6)
237
+ end
238
+
239
+ it 'cell g14 should equal 2017.0' do
240
+ sheet2.g14.should be_close(2017.0,201.7)
241
+ end
242
+
243
+ it 'cell h14 should equal 2018.0' do
244
+ sheet2.h14.should be_close(2018.0,201.8)
245
+ end
246
+
247
+ it 'cell i14 should equal 2019.0' do
248
+ sheet2.i14.should be_close(2019.0,201.9)
249
+ end
250
+
251
+ it 'cell j14 should equal 2020.0' do
252
+ sheet2.j14.should be_close(2020.0,202.0)
253
+ end
254
+
255
+ it 'cell d15 should equal 20.0' do
256
+ sheet2.d15.should be_close(20.0,2.0)
257
+ end
258
+
259
+ it 'cell e15 should equal 20.0' do
260
+ sheet2.e15.should be_close(20.0,2.0)
261
+ end
262
+
263
+ it 'cell f15 should equal 20.0' do
264
+ sheet2.f15.should be_close(20.0,2.0)
265
+ end
266
+
267
+ it 'cell g15 should equal 20.0' do
268
+ sheet2.g15.should be_close(20.0,2.0)
269
+ end
270
+
271
+ it 'cell h15 should equal 20.0' do
272
+ sheet2.h15.should be_close(20.0,2.0)
273
+ end
274
+
275
+ it 'cell i15 should equal 20.0' do
276
+ sheet2.i15.should be_close(20.0,2.0)
277
+ end
278
+
279
+ it 'cell j15 should equal 20.0' do
280
+ sheet2.j15.should be_close(20.0,2.0)
281
+ end
282
+
283
+ it 'cell c17 should equal 2013.0' do
284
+ sheet2.c17.should be_close(2013.0,201.3)
285
+ end
286
+
287
+ it 'cell d17 should equal 2014.0' do
288
+ sheet2.d17.should be_close(2014.0,201.4)
289
+ end
290
+
291
+ it 'cell e17 should equal 2015.0' do
292
+ sheet2.e17.should be_close(2015.0,201.5)
293
+ end
294
+
295
+ it 'cell f17 should equal 2016.0' do
296
+ sheet2.f17.should be_close(2016.0,201.6)
297
+ end
298
+
299
+ it 'cell g17 should equal 2017.0' do
300
+ sheet2.g17.should be_close(2017.0,201.7)
301
+ end
302
+
303
+ it 'cell h17 should equal 2018.0' do
304
+ sheet2.h17.should be_close(2018.0,201.8)
305
+ end
306
+
307
+ it 'cell i17 should equal 2019.0' do
308
+ sheet2.i17.should be_close(2019.0,201.9)
309
+ end
310
+
311
+ it 'cell j17 should equal 2020.0' do
312
+ sheet2.j17.should be_close(2020.0,202.0)
313
+ end
314
+
315
+ it 'cell c18 should equal 3.265' do
316
+ sheet2.c18.should be_close(3.265,0.3265)
317
+ end
318
+
319
+ it 'cell d18 should equal 3.208189' do
320
+ sheet2.d18.should be_close(3.208189,0.3208189)
321
+ end
322
+
323
+ it 'cell e18 should equal 3.1523665114' do
324
+ sheet2.e18.should be_close(3.1523665114,0.31523665114)
325
+ end
326
+
327
+ it 'cell f18 should equal 3.09751533410164' do
328
+ sheet2.f18.should be_close(3.09751533410164,0.309751533410164)
329
+ end
330
+
331
+ it 'cell g18 should equal 3.04361856728827' do
332
+ sheet2.g18.should be_close(3.04361856728827,0.304361856728827)
333
+ end
334
+
335
+ it 'cell h18 should equal 2.99065960421746' do
336
+ sheet2.h18.should be_close(2.99065960421746,0.299065960421746)
337
+ end
338
+
339
+ it 'cell i18 should equal 2.93862212710407' do
340
+ sheet2.i18.should be_close(2.93862212710407,0.293862212710407)
341
+ end
342
+
343
+ it 'cell j18 should equal 2.88749010209246' do
344
+ sheet2.j18.should be_close(2.88749010209246,0.288749010209246)
345
+ end
346
+
347
+ it 'cell c19 should equal 0.5366679' do
348
+ sheet2.c19.should be_close(0.5366679,0.05366679)
349
+ end
350
+
351
+ it 'cell d19 should equal 0.828661237705715' do
352
+ sheet2.d19.should be_close(0.828661237705715,0.0828661237705715)
353
+ end
354
+
355
+ it 'cell e19 should equal 1.11033072568587' do
356
+ sheet2.e19.should be_close(1.11033072568587,0.111033072568587)
357
+ end
358
+
359
+ it 'cell f19 should equal 1.38194723000798' do
360
+ sheet2.f19.should be_close(1.38194723000798,0.138194723000798)
361
+ end
362
+
363
+ it 'cell g19 should equal 1.64377531624918' do
364
+ sheet2.g19.should be_close(1.64377531624918,0.164377531624918)
365
+ end
366
+
367
+ it 'cell h19 should equal 1.89607338674582' do
368
+ sheet2.h19.should be_close(1.89607338674582,0.189607338674582)
369
+ end
370
+
371
+ it 'cell i19 should equal 2.13909381497444' do
372
+ sheet2.i19.should be_close(2.13909381497444,0.213909381497444)
373
+ end
374
+
375
+ it 'cell j19 should equal 2.37308307712212' do
376
+ sheet2.j19.should be_close(2.37308307712212,0.237308307712212)
377
+ end
378
+
379
+ it 'cell c20 should equal 3.8016679' do
380
+ sheet2.c20.should be_close(3.8016679,0.38016679)
381
+ end
382
+
383
+ it 'cell d20 should equal 4.03685023770571' do
384
+ sheet2.d20.should be_close(4.03685023770571,0.403685023770571)
385
+ end
386
+
387
+ it 'cell e20 should equal 4.26269723708587' do
388
+ sheet2.e20.should be_close(4.26269723708587,0.426269723708587)
389
+ end
390
+
391
+ it 'cell f20 should equal 4.47946256410962' do
392
+ sheet2.f20.should be_close(4.47946256410962,0.447946256410962)
393
+ end
394
+
395
+ it 'cell g20 should equal 4.68739388353745' do
396
+ sheet2.g20.should be_close(4.68739388353745,0.468739388353745)
397
+ end
398
+
399
+ it 'cell h20 should equal 4.88673299096328' do
400
+ sheet2.h20.should be_close(4.88673299096328,0.488673299096328)
401
+ end
402
+
403
+ it 'cell i20 should equal 5.07771594207851' do
404
+ sheet2.i20.should be_close(5.07771594207851,0.507771594207851)
405
+ end
406
+
407
+ it 'cell j20 should equal 5.26057317921459' do
408
+ sheet2.j20.should be_close(5.26057317921459,0.526057317921459)
409
+ end
410
+
411
+ end
412
+
@@ -0,0 +1,9 @@
1
+ # coding: utf-8
2
+ require 'rubyfromexcel'
3
+
4
+ class Spreadsheet
5
+ include RubyFromExcel::ExcelFunctions
6
+
7
+ end
8
+
9
+ Dir[File.join(File.dirname(__FILE__),"sheets/","sheet*.rb")].each {|f| Spreadsheet.autoload(File.basename(f,".rb").capitalize,f)}
@@ -0,0 +1,9 @@
1
+ # coding: utf-8
2
+ # Sheet1
3
+ class Sheet1 < Spreadsheet
4
+ def a2; 1.0; end
5
+ def a3; 2.0; end
6
+ def a4; @a4 ||= sheet1.a2; end
7
+ def a5; @a5 ||= sheet1.a3; end
8
+ end
9
+
@@ -0,0 +1,8 @@
1
+ # coding: utf-8
2
+ # Sheet1 (2)
3
+ class Sheet2 < Spreadsheet
4
+ def a1; 5.0; end
5
+ def a2; @a2 ||= sheet2.a1; end
6
+ def a3; @a3 ||= sum(sheet1.a('a2','a3')); end
7
+ end
8
+
@@ -0,0 +1,16 @@
1
+ # coding: utf-8
2
+ require_relative '../spreadsheet'
3
+ # Sheet1
4
+ describe 'Sheet1' do
5
+ def sheet1; $spreadsheet ||= Spreadsheet.new; $spreadsheet.sheet1; end
6
+
7
+ it 'cell a4 should equal 1.0' do
8
+ sheet1.a4.should be_close(1.0,0.1)
9
+ end
10
+
11
+ it 'cell a5 should equal 2.0' do
12
+ sheet1.a5.should be_close(2.0,0.2)
13
+ end
14
+
15
+ end
16
+
@@ -0,0 +1,16 @@
1
+ # coding: utf-8
2
+ require_relative '../spreadsheet'
3
+ # Sheet1 (2)
4
+ describe 'Sheet2' do
5
+ def sheet2; $spreadsheet ||= Spreadsheet.new; $spreadsheet.sheet2; end
6
+
7
+ it 'cell a2 should equal 5.0' do
8
+ sheet2.a2.should be_close(5.0,0.5)
9
+ end
10
+
11
+ it 'cell a3 should equal 3.0' do
12
+ sheet2.a3.should be_close(3.0,0.3)
13
+ end
14
+
15
+ end
16
+
@@ -0,0 +1,9 @@
1
+ # coding: utf-8
2
+ require 'rubyfromexcel'
3
+
4
+ class Spreadsheet
5
+ include RubyFromExcel::ExcelFunctions
6
+
7
+ end
8
+
9
+ Dir[File.join(File.dirname(__FILE__),"sheets/","sheet*.rb")].each {|f| Spreadsheet.autoload(File.basename(f,".rb").capitalize,f)}
@@ -0,0 +1,11 @@
1
+ # coding: utf-8
2
+ # Outputs
3
+ class Sheet1 < Spreadsheet
4
+ def a1; "Result"; end
5
+ def b1; @b1 ||= sheet2.a1; end
6
+ def a2; "Input"; end
7
+ def b2; @b2 ||= sheet3.a1; end
8
+ def b3; @b3 ||= sheet2.c9; end
9
+ def b4; "Doesn't depend on an input"; end
10
+ end
11
+
@@ -0,0 +1,14 @@
1
+ # coding: utf-8
2
+ # Calcs
3
+ class Sheet2 < Spreadsheet
4
+ def a1; @a1 ||= sum(a('a2','a7')); end
5
+ def a2; 1.0; end
6
+ def a3; 2.0; end
7
+ def a4; @a4 ||= sheet3.a1; end
8
+ def a5; 4.0; end
9
+ def a6; 10.0; end
10
+ def a7; 5.0; end
11
+ def c8; "Inputs"; end
12
+ def c9; @c9 ||= sheet3.a3; end
13
+ end
14
+
@@ -0,0 +1,7 @@
1
+ # coding: utf-8
2
+ # Inputs
3
+ class Sheet3 < Spreadsheet
4
+ def a1; 99.0; end
5
+ def a3; "In result"; end
6
+ end
7
+
@@ -0,0 +1,20 @@
1
+ # coding: utf-8
2
+ require_relative '../spreadsheet'
3
+ # Outputs
4
+ describe 'Sheet1' do
5
+ def sheet1; $spreadsheet ||= Spreadsheet.new; $spreadsheet.sheet1; end
6
+
7
+ it 'cell b1 should equal 121.0' do
8
+ sheet1.b1.should be_close(121.0,12.1)
9
+ end
10
+
11
+ it 'cell b2 should equal 99.0' do
12
+ sheet1.b2.should be_close(99.0,9.9)
13
+ end
14
+
15
+ it 'cell b3 should equal "In result"' do
16
+ sheet1.b3.should == "In result"
17
+ end
18
+
19
+ end
20
+
@@ -0,0 +1,20 @@
1
+ # coding: utf-8
2
+ require_relative '../spreadsheet'
3
+ # Calcs
4
+ describe 'Sheet2' do
5
+ def sheet2; $spreadsheet ||= Spreadsheet.new; $spreadsheet.sheet2; end
6
+
7
+ it 'cell a1 should equal 121.0' do
8
+ sheet2.a1.should be_close(121.0,12.1)
9
+ end
10
+
11
+ it 'cell a4 should equal 99.0' do
12
+ sheet2.a4.should be_close(99.0,9.9)
13
+ end
14
+
15
+ it 'cell c9 should equal "In result"' do
16
+ sheet2.c9.should == "In result"
17
+ end
18
+
19
+ end
20
+
@@ -0,0 +1,8 @@
1
+ # coding: utf-8
2
+ require_relative '../spreadsheet'
3
+ # Inputs
4
+ describe 'Sheet3' do
5
+ def sheet3; $spreadsheet ||= Spreadsheet.new; $spreadsheet.sheet3; end
6
+
7
+ end
8
+
@@ -0,0 +1,9 @@
1
+ # coding: utf-8
2
+ require 'rubyfromexcel'
3
+
4
+ class Spreadsheet
5
+ include RubyFromExcel::ExcelFunctions
6
+
7
+ end
8
+
9
+ Dir[File.join(File.dirname(__FILE__),"sheets/","sheet*.rb")].each {|f| Spreadsheet.autoload(File.basename(f,".rb").capitalize,f)}
@@ -0,0 +1,15 @@
1
+ # coding: utf-8
2
+ # Sheet1
3
+ class Sheet1 < Spreadsheet
4
+ def a1; 1.0; end
5
+ def a2; @a2 ||= a1*2.0; end
6
+ def a3; @a3 ||= a2*2.0; end
7
+ def a4; @a4 ||= a3*2.0; end
8
+ def a5; @a5 ||= a4*2.0; end
9
+ def a6; @a6 ||= a5*2.0; end
10
+ def a7; @a7 ||= a6*2.0; end
11
+ def a8; @a8 ||= a7*2.0; end
12
+ def a9; @a9 ||= a8*2.0; end
13
+ def a10; @a10 ||= a9*2.0; end
14
+ end
15
+
@@ -0,0 +1,44 @@
1
+ # coding: utf-8
2
+ require_relative '../spreadsheet'
3
+ # Sheet1
4
+ describe 'Sheet1' do
5
+ def sheet1; $spreadsheet ||= Spreadsheet.new; $spreadsheet.sheet1; end
6
+
7
+ it 'cell a2 should equal 2.0' do
8
+ sheet1.a2.should be_close(2.0,0.2)
9
+ end
10
+
11
+ it 'cell a3 should equal 4.0' do
12
+ sheet1.a3.should be_close(4.0,0.4)
13
+ end
14
+
15
+ it 'cell a4 should equal 8.0' do
16
+ sheet1.a4.should be_close(8.0,0.8)
17
+ end
18
+
19
+ it 'cell a5 should equal 16.0' do
20
+ sheet1.a5.should be_close(16.0,1.6)
21
+ end
22
+
23
+ it 'cell a6 should equal 32.0' do
24
+ sheet1.a6.should be_close(32.0,3.2)
25
+ end
26
+
27
+ it 'cell a7 should equal 64.0' do
28
+ sheet1.a7.should be_close(64.0,6.4)
29
+ end
30
+
31
+ it 'cell a8 should equal 128.0' do
32
+ sheet1.a8.should be_close(128.0,12.8)
33
+ end
34
+
35
+ it 'cell a9 should equal 256.0' do
36
+ sheet1.a9.should be_close(256.0,25.6)
37
+ end
38
+
39
+ it 'cell a10 should equal 512.0' do
40
+ sheet1.a10.should be_close(512.0,51.2)
41
+ end
42
+
43
+ end
44
+
@@ -0,0 +1,9 @@
1
+ # coding: utf-8
2
+ require 'rubyfromexcel'
3
+
4
+ class Spreadsheet
5
+ include RubyFromExcel::ExcelFunctions
6
+
7
+ end
8
+
9
+ Dir[File.join(File.dirname(__FILE__),"sheets/","sheet*.rb")].each {|f| Spreadsheet.autoload(File.basename(f,".rb").capitalize,f)}
@@ -0,0 +1,17 @@
1
+ # coding: utf-8
2
+ # Sheet1
3
+ class Sheet1 < Spreadsheet
4
+ def b2; "Column A"; end
5
+ def c2; "Column B "; end
6
+ def d2; "Column C"; end
7
+ def b3; 1.0; end
8
+ def c3; 2.0; end
9
+ def d3; @d3 ||= sheet1.b3+sheet1.c3; end
10
+ def b4; 3.0; end
11
+ def c4; 4.0; end
12
+ def d4; @d4 ||= sheet1.b4+sheet1.c4; end
13
+ def b5; 5.0; end
14
+ def c5; 6.0; end
15
+ def d5; @d5 ||= sheet1.b5+sheet1.c5; end
16
+ end
17
+
@@ -0,0 +1,5 @@
1
+ # coding: utf-8
2
+ # Sheet2
3
+ class Sheet2 < Spreadsheet
4
+ end
5
+
@@ -0,0 +1,5 @@
1
+ # coding: utf-8
2
+ # Sheet3
3
+ class Sheet3 < Spreadsheet
4
+ end
5
+