excel_to_code 0.2.8 → 0.2.9

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5f1988c086ef6a403614793934210ee23e3053b3
4
- data.tar.gz: 94883836b8fc03b001359fef54c066908ecf5bce
3
+ metadata.gz: 7529040ce2d0f45b5a280ac08be87c8ac0df7a73
4
+ data.tar.gz: dd33604aada1850a86209407453eab32c1562f5a
5
5
  SHA512:
6
- metadata.gz: e7cc4cc4002a58becf5abac81bd3da2be911468bbbf2391025314d893e776d21bfee5498d05544d0f90636e97ba4d07a0ef477476b0ecd3e3bc5c5f4a1831811
7
- data.tar.gz: 27abf806472aa1328e0c5806d04c1bab8905ab0ab55330af95b7bbb74c7427794dad4b2cb3c733335836b63f39af6ee898e8d21bb869037557c4f3e2abd4d2ea
6
+ metadata.gz: 6adb53e38ffcc2326755175551c358fe223288b2dcd4ac1d23a7c75eca43b785c780836e9dadf39beb15ef5124c896e74af3b69bd510a4dfd9a143153bb13e2a
7
+ data.tar.gz: 22b7b90bc550f925c704a4087a496ed2e0754a1f93ce0243ddedf5b38367c3b6d21b2e9d268c10d522651aff8e45cd2967606e3e461ff5c8bacb7c03b3af32d0
@@ -585,9 +585,10 @@ class ExcelToX
585
585
  @replace_ranges_with_array_literals_replacer ||= ReplaceRangesWithArrayLiteralsAst.new
586
586
  expand_array_formulae_replacer = AstExpandArrayFormulae.new
587
587
  simplify_arithmetic_replacer ||= SimplifyArithmeticAst.new
588
+ @shared_string_replacer ||= ReplaceSharedStringAst.new(@shared_strings)
589
+ transpose_function_replacer = ReplaceTransposeFunction.new
588
590
 
589
591
  # FIXME: THIS IS THE MOST HORRIFIC BODGE. I HATE IT.
590
- @shared_string_replacer ||= ReplaceSharedStringAst.new(@shared_strings)
591
592
  emergency_indirect_replacement_bodge = EmergencyArrayFormulaReplaceIndirectBodge.new
592
593
  emergency_indirect_replacement_bodge.references = @values
593
594
 
@@ -602,6 +603,7 @@ class ExcelToX
602
603
  table_reference_replacer.referring_cell = ref.last
603
604
  table_reference_replacer.map(details.last)
604
605
  @replace_ranges_with_array_literals_replacer.map(details.last)
606
+ transpose_function_replacer.map(details.last)
605
607
  simplify_arithmetic_replacer.map(details.last)
606
608
  expand_array_formulae_replacer.map(details.last)
607
609
  end
data/src/simplify.rb CHANGED
@@ -20,3 +20,4 @@ require_relative "simplify/replace_arithmetic_on_ranges"
20
20
  require_relative "simplify/wrap_formulae_that_return_arrays_and_are_not_in_arrays"
21
21
  require_relative "simplify/replace_string_join_on_ranges"
22
22
  require_relative "simplify/emergency_array_formula_replace_indirect_bodge.rb"
23
+ require_relative "simplify/replace_transpose_function"
@@ -0,0 +1,34 @@
1
+ class ReplaceTransposeFunction
2
+
3
+ def replace(ast)
4
+ map(ast)
5
+ end
6
+
7
+ def map(ast)
8
+ return ast unless ast.is_a?(Array)
9
+ function(ast) if ast[0] == :function
10
+ ast.each { |a| map(a) }
11
+ ast
12
+ end
13
+
14
+ def function(ast)
15
+ return unless ast[1] == :TRANSPOSE
16
+ array = array_ast_to_ruby_array(ast[2])
17
+ array = array.transpose
18
+ ast.replace(ruby_array_to_array_ast(array))
19
+ ast
20
+ end
21
+
22
+ def array_ast_to_ruby_array(array_ast)
23
+ return [[array_ast]] unless array_ast.first == :array
24
+ array_ast[1..-1].map do |row_ast|
25
+ row_ast[1..-1].map do |cell|
26
+ cell
27
+ end
28
+ end
29
+ end
30
+
31
+ def ruby_array_to_array_ast(ruby_array)
32
+ [:array].concat(ruby_array.map { |row| [:row].concat(row) })
33
+ end
34
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: excel_to_code
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.8
4
+ version: 0.2.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Counsell, Green on Black Ltd
@@ -244,6 +244,7 @@ files:
244
244
  - src/simplify/replace_shared_strings.rb
245
245
  - src/simplify/replace_string_join_on_ranges.rb
246
246
  - src/simplify/replace_table_references.rb
247
+ - src/simplify/replace_transpose_function.rb
247
248
  - src/simplify/replace_values_with_constants.rb
248
249
  - src/simplify/simplify_arithmetic.rb
249
250
  - src/simplify/sort_into_calculation_order.rb