excel_to_code 0.2.9 → 0.2.10
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.
- checksums.yaml +4 -4
- data/src/commands/excel_to_x.rb +21 -0
- data/src/rewrite/caching_formula_parser.rb +14 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d131943e44d296b38b2b2f52d4e710fb72b3290c
|
4
|
+
data.tar.gz: 1ced79386e0e176fb515794fb5026a4779d56c2a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 90c8c2c66e70b2beb0073a904d02c70444d3881bce4b570fe681a99098597319cee266611282f6789326efaf9a69198c85750633392c5aeae4fed329bfc7c521
|
7
|
+
data.tar.gz: 39325a065501520c32b29be75d0af212c498c8d8d2baf580e1a0e585b2841fa6610679a1298d2dbe86ab5bf6269821612b97ce969b1d178a514ea16ef4831e94
|
data/src/commands/excel_to_x.rb
CHANGED
@@ -130,6 +130,10 @@ class ExcelToX
|
|
130
130
|
# This gets all the formulae, values and tables out of the worksheets
|
131
131
|
extract_data_from_worksheets
|
132
132
|
|
133
|
+
# This is an early check that the functions in the extracted data have
|
134
|
+
# all got an implementation in, at least, the ruby code
|
135
|
+
check_all_functions_implemented
|
136
|
+
|
133
137
|
# This turns named references that are specified as getters and setters
|
134
138
|
# into a series of required cell references
|
135
139
|
transfer_named_references_to_keep_into_cells_to_keep
|
@@ -466,6 +470,23 @@ class ExcelToX
|
|
466
470
|
end
|
467
471
|
end
|
468
472
|
end
|
473
|
+
|
474
|
+
def check_all_functions_implemented
|
475
|
+
functions_that_are_removed_during_compilation = [:INDIRECT, :OFFSET, :ROW, :COLUMN, :TRANSPOSE]
|
476
|
+
functions_used = CachingFormulaParser.instance.functions_used.keys
|
477
|
+
functions_used.delete_if do |f|
|
478
|
+
MapFormulaeToRuby::FUNCTIONS[f]
|
479
|
+
end
|
480
|
+
functions_that_are_removed_during_compilation.each do |f|
|
481
|
+
functions_used.delete(f)
|
482
|
+
end
|
483
|
+
unless functions_used.empty?
|
484
|
+
puts
|
485
|
+
puts "The following functions have not been implemented in excel_to_code. Please see https://github.com/tamc/excel_to_code/blob/master/doc/How_to_add_a_missing_function.md"
|
486
|
+
puts functions_used
|
487
|
+
exit
|
488
|
+
end
|
489
|
+
end
|
469
490
|
|
470
491
|
# This makes sure that cells_to_keep includes named_references_to_keep
|
471
492
|
def transfer_named_references_to_keep_into_cells_to_keep
|
@@ -3,6 +3,8 @@ require 'singleton'
|
|
3
3
|
class CachingFormulaParser
|
4
4
|
include Singleton
|
5
5
|
|
6
|
+
attr_accessor :functions_used
|
7
|
+
|
6
8
|
def self.parse(*args)
|
7
9
|
instance.parse(*args)
|
8
10
|
end
|
@@ -19,6 +21,7 @@ class CachingFormulaParser
|
|
19
21
|
@operator_cache = {}
|
20
22
|
@comparator_cache = {}
|
21
23
|
@sheet_reference_cache = {}
|
24
|
+
@functions_used = {}
|
22
25
|
end
|
23
26
|
|
24
27
|
def parse(text)
|
@@ -30,15 +33,24 @@ class CachingFormulaParser
|
|
30
33
|
end
|
31
34
|
end
|
32
35
|
|
36
|
+
# FIXME: THe function bit in here isn't DRY or consistent
|
33
37
|
def map(ast)
|
34
38
|
return ast unless ast.is_a?(Array)
|
35
|
-
|
39
|
+
if ast[0] == :function
|
40
|
+
ast[1] = ast[1].to_sym
|
41
|
+
@functions_used[ast[1]] = true
|
42
|
+
end
|
36
43
|
if respond_to?(ast[0])
|
37
44
|
ast = send(ast[0], ast)
|
38
45
|
else
|
39
46
|
ast.each.with_index do |a,i|
|
40
47
|
next unless a.is_a?(Array)
|
41
|
-
|
48
|
+
|
49
|
+
if a[0] == :function
|
50
|
+
a[1] = a[1].to_sym
|
51
|
+
@functions_used[a[1]] = true
|
52
|
+
end
|
53
|
+
|
42
54
|
ast[i] = map(a)
|
43
55
|
end
|
44
56
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: excel_to_code
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thomas Counsell, Green on Black Ltd
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-01
|
11
|
+
date: 2014-02-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubypeg
|