excel_to_code 0.0.1

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 (123) hide show
  1. data/README +41 -0
  2. data/bin/excel_to_c +63 -0
  3. data/bin/excel_to_ruby +9 -0
  4. data/src/commands.rb +2 -0
  5. data/src/commands/excel_to_c.rb +858 -0
  6. data/src/commands/excel_to_ruby.rb +620 -0
  7. data/src/compile.rb +2 -0
  8. data/src/compile/c.rb +5 -0
  9. data/src/compile/c/compile_to_c.rb +62 -0
  10. data/src/compile/c/compile_to_c_header.rb +26 -0
  11. data/src/compile/c/compile_to_c_unit_test.rb +42 -0
  12. data/src/compile/c/excel_to_c_runtime.c +2029 -0
  13. data/src/compile/c/map_formulae_to_c.rb +184 -0
  14. data/src/compile/c/map_sheet_names_to_c_names.rb +19 -0
  15. data/src/compile/c/map_values_to_c.rb +85 -0
  16. data/src/compile/c/map_values_to_c_structs.rb +37 -0
  17. data/src/compile/ruby.rb +3 -0
  18. data/src/compile/ruby/compile_to_ruby.rb +33 -0
  19. data/src/compile/ruby/compile_to_ruby_unit_test.rb +28 -0
  20. data/src/compile/ruby/excel_to_ruby_runtime.rb +1 -0
  21. data/src/compile/ruby/map_formulae_to_ruby.rb +95 -0
  22. data/src/compile/ruby/map_sheet_names_to_ruby_names.rb +19 -0
  23. data/src/compile/ruby/map_values_to_ruby.rb +65 -0
  24. data/src/excel.rb +5 -0
  25. data/src/excel/area.rb +93 -0
  26. data/src/excel/excel_functions.rb +84 -0
  27. data/src/excel/excel_functions/abs.rb +14 -0
  28. data/src/excel/excel_functions/add.rb +18 -0
  29. data/src/excel/excel_functions/and.rb +30 -0
  30. data/src/excel/excel_functions/apply_to_range.rb +17 -0
  31. data/src/excel/excel_functions/average.rb +12 -0
  32. data/src/excel/excel_functions/choose.rb +18 -0
  33. data/src/excel/excel_functions/cosh.rb +9 -0
  34. data/src/excel/excel_functions/count.rb +9 -0
  35. data/src/excel/excel_functions/counta.rb +8 -0
  36. data/src/excel/excel_functions/divide.rb +23 -0
  37. data/src/excel/excel_functions/excel_equal.rb +20 -0
  38. data/src/excel/excel_functions/excel_if.rb +8 -0
  39. data/src/excel/excel_functions/excel_match.rb +51 -0
  40. data/src/excel/excel_functions/find.rb +39 -0
  41. data/src/excel/excel_functions/iferror.rb +10 -0
  42. data/src/excel/excel_functions/index.rb +48 -0
  43. data/src/excel/excel_functions/left.rb +12 -0
  44. data/src/excel/excel_functions/less_than.rb +26 -0
  45. data/src/excel/excel_functions/less_than_or_equal.rb +26 -0
  46. data/src/excel/excel_functions/max.rb +12 -0
  47. data/src/excel/excel_functions/min.rb +12 -0
  48. data/src/excel/excel_functions/mod.rb +15 -0
  49. data/src/excel/excel_functions/more_than.rb +26 -0
  50. data/src/excel/excel_functions/more_than_or_equal.rb +26 -0
  51. data/src/excel/excel_functions/multiply.rb +24 -0
  52. data/src/excel/excel_functions/negative.rb +12 -0
  53. data/src/excel/excel_functions/not_equal.rb +19 -0
  54. data/src/excel/excel_functions/number_argument.rb +30 -0
  55. data/src/excel/excel_functions/pi.rb +7 -0
  56. data/src/excel/excel_functions/pmt.rb +16 -0
  57. data/src/excel/excel_functions/power.rb +18 -0
  58. data/src/excel/excel_functions/round.rb +13 -0
  59. data/src/excel/excel_functions/rounddown.rb +14 -0
  60. data/src/excel/excel_functions/roundup.rb +17 -0
  61. data/src/excel/excel_functions/string_join.rb +19 -0
  62. data/src/excel/excel_functions/subtotal.rb +13 -0
  63. data/src/excel/excel_functions/subtract.rb +18 -0
  64. data/src/excel/excel_functions/sum.rb +8 -0
  65. data/src/excel/excel_functions/sumif.rb +7 -0
  66. data/src/excel/excel_functions/sumifs.rb +74 -0
  67. data/src/excel/excel_functions/sumproduct.rb +32 -0
  68. data/src/excel/excel_functions/vlookup.rb +49 -0
  69. data/src/excel/formula_peg.rb +238 -0
  70. data/src/excel/formula_peg.txt +45 -0
  71. data/src/excel/reference.rb +56 -0
  72. data/src/excel/table.rb +108 -0
  73. data/src/excel_to_code.rb +7 -0
  74. data/src/extract.rb +13 -0
  75. data/src/extract/check_for_unknown_functions.rb +20 -0
  76. data/src/extract/extract_array_formulae.rb +23 -0
  77. data/src/extract/extract_formulae.rb +36 -0
  78. data/src/extract/extract_named_references.rb +38 -0
  79. data/src/extract/extract_relationships.rb +10 -0
  80. data/src/extract/extract_shared_formulae.rb +23 -0
  81. data/src/extract/extract_shared_strings.rb +20 -0
  82. data/src/extract/extract_simple_formulae.rb +18 -0
  83. data/src/extract/extract_table.rb +24 -0
  84. data/src/extract/extract_values.rb +29 -0
  85. data/src/extract/extract_worksheet_dimensions.rb +11 -0
  86. data/src/extract/extract_worksheet_names.rb +10 -0
  87. data/src/extract/extract_worksheet_table_relationships.rb +10 -0
  88. data/src/extract/simple_extract_from_xml.rb +19 -0
  89. data/src/rewrite.rb +10 -0
  90. data/src/rewrite/ast_copy_formula.rb +42 -0
  91. data/src/rewrite/ast_expand_array_formulae.rb +180 -0
  92. data/src/rewrite/rewrite_array_formulae.rb +71 -0
  93. data/src/rewrite/rewrite_array_formulae_to_arrays.rb +18 -0
  94. data/src/rewrite/rewrite_cell_references_to_include_sheet.rb +56 -0
  95. data/src/rewrite/rewrite_formulae_to_ast.rb +24 -0
  96. data/src/rewrite/rewrite_merge_formulae_and_values.rb +18 -0
  97. data/src/rewrite/rewrite_relationship_id_to_filename.rb +22 -0
  98. data/src/rewrite/rewrite_shared_formulae.rb +38 -0
  99. data/src/rewrite/rewrite_values_to_ast.rb +28 -0
  100. data/src/rewrite/rewrite_whole_row_column_references_to_areas.rb +90 -0
  101. data/src/rewrite/rewrite_worksheet_names.rb +20 -0
  102. data/src/simplify.rb +16 -0
  103. data/src/simplify/count_formula_references.rb +58 -0
  104. data/src/simplify/identify_dependencies.rb +56 -0
  105. data/src/simplify/identify_repeated_formula_elements.rb +37 -0
  106. data/src/simplify/inline_formulae.rb +77 -0
  107. data/src/simplify/map_formulae_to_values.rb +157 -0
  108. data/src/simplify/remove_cells.rb +18 -0
  109. data/src/simplify/replace_arrays_with_single_cells.rb +27 -0
  110. data/src/simplify/replace_blanks.rb +58 -0
  111. data/src/simplify/replace_common_elements_in_formulae.rb +19 -0
  112. data/src/simplify/replace_formulae_with_calculated_values.rb +21 -0
  113. data/src/simplify/replace_indirects_with_references.rb +44 -0
  114. data/src/simplify/replace_named_references.rb +82 -0
  115. data/src/simplify/replace_ranges_with_array_literals.rb +54 -0
  116. data/src/simplify/replace_shared_strings.rb +49 -0
  117. data/src/simplify/replace_table_references.rb +71 -0
  118. data/src/simplify/replace_values_with_constants.rb +47 -0
  119. data/src/simplify/simplify_arithmetic.rb +54 -0
  120. data/src/util.rb +2 -0
  121. data/src/util/not_supported_exception.rb +2 -0
  122. data/src/util/try.rb +9 -0
  123. metadata +207 -0
@@ -0,0 +1,49 @@
1
+ class ReplaceSharedStringAst
2
+
3
+ attr_accessor :shared_strings
4
+
5
+ def initialize(shared_strings)
6
+ @shared_strings = shared_strings.map do |s|
7
+ s[/^(.*?)\n$/,1]
8
+ end
9
+ end
10
+
11
+ def map(ast)
12
+ if ast.is_a?(Array)
13
+ operator = ast.shift
14
+ if respond_to?(operator)
15
+ send(operator,*ast)
16
+ else
17
+ [operator,*ast.map {|a| map(a) }]
18
+ end
19
+ else
20
+ return ast
21
+ end
22
+ end
23
+
24
+ def shared_string(string_id)
25
+ [:string,shared_strings[string_id.to_i]]
26
+ end
27
+ end
28
+
29
+
30
+ class ReplaceSharedStrings
31
+
32
+ def self.replace(values,shared_strings,output)
33
+ self.new.replace(values,shared_strings,output)
34
+ end
35
+
36
+ # Rewrites ast with shared strings to strings
37
+ def replace(values,shared_strings,output)
38
+ rewriter = ReplaceSharedStringAst.new(shared_strings.readlines)
39
+ values.lines do |line|
40
+ # Looks to match shared string lines
41
+ if line =~ /\[:shared_string/
42
+ ref, ast = line.split("\t")
43
+ output.puts "#{ref}\t#{rewriter.map(eval(ast)).inspect}"
44
+ else
45
+ output.puts line
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,71 @@
1
+ class ReplaceTableReferenceAst
2
+
3
+ attr_accessor :tables, :worksheet, :referring_cell
4
+
5
+ def initialize(tables, worksheet = nil, referring_cell = nil)
6
+ @tables, @worksheet, @referring_cell = tables, worksheet, referring_cell
7
+ end
8
+
9
+ def map(ast)
10
+ return ast unless ast.is_a?(Array)
11
+ operator = ast[0]
12
+ if respond_to?(operator)
13
+ send(operator,*ast[1..-1])
14
+ else
15
+ [operator,*ast[1..-1].map {|a| map(a) }]
16
+ end
17
+ end
18
+
19
+ def table_reference(table_name,table_reference)
20
+ return [:error,"#REF!"] unless tables.has_key?(table_name.downcase)
21
+ tables[table_name.downcase].reference_for(table_name,table_reference,worksheet,referring_cell)
22
+ end
23
+
24
+ def local_table_reference(table_reference)
25
+ table = tables.values.find do |table|
26
+ table.includes?(worksheet,referring_cell)
27
+ end
28
+ return [:error,"#REF!"] unless table
29
+ table.reference_for(table.name,table_reference,worksheet,referring_cell)
30
+ end
31
+
32
+ end
33
+
34
+
35
+ class ReplaceTableReferences
36
+
37
+ attr_accessor :sheet_name
38
+
39
+ def self.replace(*args)
40
+ self.new.replace(*args)
41
+ end
42
+
43
+ def replace(input,table_data,output)
44
+ tables = {}
45
+ table_data.each do |line|
46
+ table = Table.new(*line.strip.split("\t"))
47
+ tables[table.name.downcase] = table
48
+ end
49
+
50
+ rewriter = ReplaceTableReferenceAst.new(tables,sheet_name)
51
+
52
+ input.lines do |line|
53
+ # Looks to match shared string lines
54
+ begin
55
+ if line =~ /\[(:table_reference|:local_table_reference)/
56
+ cols = line.split("\t")
57
+ ast = cols.pop
58
+ ref = cols.first
59
+ rewriter.referring_cell = ref
60
+ output.puts "#{cols.join("\t")}\t#{rewriter.map(eval(ast)).inspect}"
61
+ else
62
+ output.puts line
63
+ end
64
+ rescue Exception => e
65
+ puts "Exception at line #{line}"
66
+ raise
67
+ end
68
+ end
69
+ end
70
+
71
+ end
@@ -0,0 +1,47 @@
1
+ class MapValuesToConstants
2
+
3
+ attr_accessor :constants
4
+
5
+ def initialize
6
+ count = 0
7
+ @constants = Hash.new do |hash,key|
8
+ count += 1
9
+ hash[key] = "C#{count}"
10
+ end
11
+ end
12
+
13
+ def map(ast)
14
+ return ast unless ast.is_a?(Array)
15
+ operator = ast[0]
16
+ if [:number,:percentage,:string].include?(operator)
17
+ [:constant, constants[ast]]
18
+ else
19
+ [operator,*ast[1..-1].map {|a| map(a) }]
20
+ end
21
+ end
22
+
23
+ end
24
+
25
+
26
+ class ReplaceValuesWithConstants
27
+
28
+ attr_accessor :rewriter
29
+
30
+ def self.replace(*args)
31
+ self.new.replace(*args)
32
+ end
33
+
34
+ def replace(input,output)
35
+ @rewriter ||= MapValuesToConstants.new
36
+ input.lines do |line|
37
+ begin
38
+ ref, ast = line.split("\t")
39
+ output.puts "#{ref}\t#{rewriter.map(eval(ast)).inspect}"
40
+ rescue Exception => e
41
+ puts "Exception at line #{line}"
42
+ raise
43
+ end
44
+ end
45
+
46
+ end
47
+ end
@@ -0,0 +1,54 @@
1
+ class SimplifyArithmeticAst
2
+
3
+ def map(ast)
4
+ return ast unless ast.is_a?(Array)
5
+ operator = ast[0]
6
+ if respond_to?(operator)
7
+ send(operator,*ast[1..-1])
8
+ else
9
+ [operator,*ast[1..-1].map {|a| map(a) }]
10
+ end
11
+ end
12
+
13
+ def brackets(*args)
14
+ raise NotSupportedException.new("Multiple arguments not supported in brackets #{args.inspect}") if args.size > 1
15
+ map(args.first)
16
+ end
17
+
18
+ def arithmetic(*args)
19
+ return map(args.first) if args.size == 1
20
+ return [:arithmetic,*args.map {|a| map(a) }] if args.size == 3
21
+ [['^'],['*','/'],['+','-']].each do |op|
22
+ i = args.find_index { |a| a[0] == :operator && op.include?(a[1])}
23
+ next unless i
24
+ pre_operation = i == 1 ? [] : args[0..(i-2)]
25
+ operation = args[(i-1)..(i+1)]
26
+ post_operation = (i + 2) > args.size ? [] : args[(i+2)..-1]
27
+ return arithmetic(*pre_operation.map {|a| map(a) },[:arithmetic,*operation],*post_operation.map {|a| map(a) })
28
+ end
29
+ return [:arithmetic,*args.map {|a| map(a) }]
30
+ end
31
+
32
+ end
33
+
34
+
35
+ class SimplifyArithmetic
36
+
37
+ def self.replace(*args)
38
+ self.new.replace(*args)
39
+ end
40
+
41
+ def replace(input,output)
42
+ rewriter = SimplifyArithmeticAst.new
43
+ input.lines do |line|
44
+ # Looks to match lines with references
45
+ if line =~ /:arithmetic/
46
+ content = line.split("\t")
47
+ ast = eval(content.pop)
48
+ output.puts "#{content.join("\t")}\t#{rewriter.map(ast).inspect}"
49
+ else
50
+ output.puts line
51
+ end
52
+ end
53
+ end
54
+ end
data/src/util.rb ADDED
@@ -0,0 +1,2 @@
1
+ require_relative "util/not_supported_exception"
2
+ require_relative "util/try"
@@ -0,0 +1,2 @@
1
+ class NotSupportedException < Exception
2
+ end
data/src/util/try.rb ADDED
@@ -0,0 +1,9 @@
1
+ class Object
2
+ ##
3
+ # @person ? @person.name : nil
4
+ # vs
5
+ # @person.try(:name)
6
+ def try(method)
7
+ send method if respond_to? method
8
+ end
9
+ end
metadata ADDED
@@ -0,0 +1,207 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: excel_to_code
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Thomas Counsell, Green on Black Ltd
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-04-13 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: nokogiri
16
+ requirement: &70298839691560 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 1.5.0
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70298839691560
25
+ - !ruby/object:Gem::Dependency
26
+ name: rspec
27
+ requirement: &70298839691040 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: 2.7.0
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *70298839691040
36
+ description: ! "# excel_to_code\n\nConverts some excel spreadsheets (.xlsx, not .xls)
37
+ into some other programming languages (currently ruby or c).\nThis allows the excel
38
+ spreadsheets to be run programatically, without excel.\n\nIts cannonical source
39
+ is at http://github.com/tamc/excel2code\n\n# Running excel_to_code\n\nTo just have
40
+ a go:\n\n\t./bin/excel_to_c <excel_file_name>\n\t\nNB:For small spreadsheets this
41
+ will take a minute or so. For large spreadsheets it is best to run it overnight.\n\t\nfor
42
+ more detail:\n\t\n\t./bin/excel_to_c --compile --run-tests --settable <name of input
43
+ worksheet> --prune-except <name of output worksheet> <excel file name> \n\t\nthis
44
+ should work:\n\n\t./bin/excel_to_c --help\n\n# Testing excel_to_code\n\n1. Make
45
+ sure you have ruby 1.9.2 or later installed\n2. gem install bundler # May need to
46
+ use sudo\n3. bundle\n4. rspec spec/*\n\n# Hacking excel_to_code\n\nThere are some
47
+ how to guides in the doc folder. \n\n# Limitations\n\n1. Not tested at all on Windows\n2.
48
+ INDIRECT formula must be convertable at runtime into a standard formula\n3. Doesn't
49
+ implement all functions (see doc/Which_functions_are_implemented.md)\n4. Doesn't
50
+ implement references that involve range unions and lists\n5. Sometimes gives cells
51
+ as being empty, when excel would give the cell as having a numeric value of zero\n"
52
+ email: tamc@greenonblack.com
53
+ executables:
54
+ - excel_to_c
55
+ - excel_to_ruby
56
+ extensions: []
57
+ extra_rdoc_files: []
58
+ files:
59
+ - README
60
+ - src/commands/excel_to_c.rb
61
+ - src/commands/excel_to_ruby.rb
62
+ - src/commands.rb
63
+ - src/compile/c/compile_to_c.rb
64
+ - src/compile/c/compile_to_c_header.rb
65
+ - src/compile/c/compile_to_c_unit_test.rb
66
+ - src/compile/c/excel_to_c_runtime.c
67
+ - src/compile/c/map_formulae_to_c.rb
68
+ - src/compile/c/map_sheet_names_to_c_names.rb
69
+ - src/compile/c/map_values_to_c.rb
70
+ - src/compile/c/map_values_to_c_structs.rb
71
+ - src/compile/c.rb
72
+ - src/compile/ruby/compile_to_ruby.rb
73
+ - src/compile/ruby/compile_to_ruby_unit_test.rb
74
+ - src/compile/ruby/excel_to_ruby_runtime.rb
75
+ - src/compile/ruby/map_formulae_to_ruby.rb
76
+ - src/compile/ruby/map_sheet_names_to_ruby_names.rb
77
+ - src/compile/ruby/map_values_to_ruby.rb
78
+ - src/compile/ruby.rb
79
+ - src/compile.rb
80
+ - src/excel/area.rb
81
+ - src/excel/excel_functions/abs.rb
82
+ - src/excel/excel_functions/add.rb
83
+ - src/excel/excel_functions/and.rb
84
+ - src/excel/excel_functions/apply_to_range.rb
85
+ - src/excel/excel_functions/average.rb
86
+ - src/excel/excel_functions/choose.rb
87
+ - src/excel/excel_functions/cosh.rb
88
+ - src/excel/excel_functions/count.rb
89
+ - src/excel/excel_functions/counta.rb
90
+ - src/excel/excel_functions/divide.rb
91
+ - src/excel/excel_functions/excel_equal.rb
92
+ - src/excel/excel_functions/excel_if.rb
93
+ - src/excel/excel_functions/excel_match.rb
94
+ - src/excel/excel_functions/find.rb
95
+ - src/excel/excel_functions/iferror.rb
96
+ - src/excel/excel_functions/index.rb
97
+ - src/excel/excel_functions/left.rb
98
+ - src/excel/excel_functions/less_than.rb
99
+ - src/excel/excel_functions/less_than_or_equal.rb
100
+ - src/excel/excel_functions/max.rb
101
+ - src/excel/excel_functions/min.rb
102
+ - src/excel/excel_functions/mod.rb
103
+ - src/excel/excel_functions/more_than.rb
104
+ - src/excel/excel_functions/more_than_or_equal.rb
105
+ - src/excel/excel_functions/multiply.rb
106
+ - src/excel/excel_functions/negative.rb
107
+ - src/excel/excel_functions/not_equal.rb
108
+ - src/excel/excel_functions/number_argument.rb
109
+ - src/excel/excel_functions/pi.rb
110
+ - src/excel/excel_functions/pmt.rb
111
+ - src/excel/excel_functions/power.rb
112
+ - src/excel/excel_functions/round.rb
113
+ - src/excel/excel_functions/rounddown.rb
114
+ - src/excel/excel_functions/roundup.rb
115
+ - src/excel/excel_functions/string_join.rb
116
+ - src/excel/excel_functions/subtotal.rb
117
+ - src/excel/excel_functions/subtract.rb
118
+ - src/excel/excel_functions/sum.rb
119
+ - src/excel/excel_functions/sumif.rb
120
+ - src/excel/excel_functions/sumifs.rb
121
+ - src/excel/excel_functions/sumproduct.rb
122
+ - src/excel/excel_functions/vlookup.rb
123
+ - src/excel/excel_functions.rb
124
+ - src/excel/formula_peg.rb
125
+ - src/excel/formula_peg.txt
126
+ - src/excel/reference.rb
127
+ - src/excel/table.rb
128
+ - src/excel.rb
129
+ - src/excel_to_code.rb
130
+ - src/extract/check_for_unknown_functions.rb
131
+ - src/extract/extract_array_formulae.rb
132
+ - src/extract/extract_formulae.rb
133
+ - src/extract/extract_named_references.rb
134
+ - src/extract/extract_relationships.rb
135
+ - src/extract/extract_shared_formulae.rb
136
+ - src/extract/extract_shared_strings.rb
137
+ - src/extract/extract_simple_formulae.rb
138
+ - src/extract/extract_table.rb
139
+ - src/extract/extract_values.rb
140
+ - src/extract/extract_worksheet_dimensions.rb
141
+ - src/extract/extract_worksheet_names.rb
142
+ - src/extract/extract_worksheet_table_relationships.rb
143
+ - src/extract/simple_extract_from_xml.rb
144
+ - src/extract.rb
145
+ - src/rewrite/ast_copy_formula.rb
146
+ - src/rewrite/ast_expand_array_formulae.rb
147
+ - src/rewrite/rewrite_array_formulae.rb
148
+ - src/rewrite/rewrite_array_formulae_to_arrays.rb
149
+ - src/rewrite/rewrite_cell_references_to_include_sheet.rb
150
+ - src/rewrite/rewrite_formulae_to_ast.rb
151
+ - src/rewrite/rewrite_merge_formulae_and_values.rb
152
+ - src/rewrite/rewrite_relationship_id_to_filename.rb
153
+ - src/rewrite/rewrite_shared_formulae.rb
154
+ - src/rewrite/rewrite_values_to_ast.rb
155
+ - src/rewrite/rewrite_whole_row_column_references_to_areas.rb
156
+ - src/rewrite/rewrite_worksheet_names.rb
157
+ - src/rewrite.rb
158
+ - src/simplify/count_formula_references.rb
159
+ - src/simplify/identify_dependencies.rb
160
+ - src/simplify/identify_repeated_formula_elements.rb
161
+ - src/simplify/inline_formulae.rb
162
+ - src/simplify/map_formulae_to_values.rb
163
+ - src/simplify/remove_cells.rb
164
+ - src/simplify/replace_arrays_with_single_cells.rb
165
+ - src/simplify/replace_blanks.rb
166
+ - src/simplify/replace_common_elements_in_formulae.rb
167
+ - src/simplify/replace_formulae_with_calculated_values.rb
168
+ - src/simplify/replace_indirects_with_references.rb
169
+ - src/simplify/replace_named_references.rb
170
+ - src/simplify/replace_ranges_with_array_literals.rb
171
+ - src/simplify/replace_shared_strings.rb
172
+ - src/simplify/replace_table_references.rb
173
+ - src/simplify/replace_values_with_constants.rb
174
+ - src/simplify/simplify_arithmetic.rb
175
+ - src/simplify.rb
176
+ - src/util/not_supported_exception.rb
177
+ - src/util/try.rb
178
+ - src/util.rb
179
+ - bin/excel_to_c
180
+ - bin/excel_to_ruby
181
+ homepage: http://github.com/tamc/excel2code
182
+ licenses: []
183
+ post_install_message:
184
+ rdoc_options: []
185
+ require_paths:
186
+ - src
187
+ required_ruby_version: !ruby/object:Gem::Requirement
188
+ none: false
189
+ requirements:
190
+ - - ~>
191
+ - !ruby/object:Gem::Version
192
+ version: 1.9.1
193
+ required_rubygems_version: !ruby/object:Gem::Requirement
194
+ none: false
195
+ requirements:
196
+ - - ! '>='
197
+ - !ruby/object:Gem::Version
198
+ version: '0'
199
+ requirements: []
200
+ rubyforge_project:
201
+ rubygems_version: 1.8.10
202
+ signing_key:
203
+ specification_version: 3
204
+ summary: Converts .xlxs files into pure ruby 1.9 code or pure C code so that they
205
+ can be executed without excel
206
+ test_files: []
207
+ has_rdoc: false