excel_to_code 0.2.26 → 0.2.27

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c64e8c6e7d12441b0f858d3a98aa97197eac5e52
4
- data.tar.gz: 79afc6f86465ca664ce677be464572e87e170589
3
+ metadata.gz: 86c6743f72819d7a8b5372c8f252c3b109c71921
4
+ data.tar.gz: 9a5a252b856bf6e58266f32fb742c94ba9511d0c
5
5
  SHA512:
6
- metadata.gz: 8b512da456ba1a3634d9971ad27537ffe4f7ff4efea6d3b434f548d1412c96552ee147bd7e574d5bb38c38f31757d1fbc8eb080441aad5821a61bf6564159c0e
7
- data.tar.gz: 217072420254652330cb7cdca81c9f3c0fdba46ef0dcebf8ba391a443408bc2c2143b6a33415e355a0e48102b867771960d897e2d7f0771477f0c474d1188050
6
+ metadata.gz: 0c1356a0c2cbdd5bb6214c1465ea8b1f5a9991fd15f08d54f5525fd8596bd5881e00f6337d6e57289b062b42b0256f3c169dd5bcc612bc6f5ee7dc41c2435687
7
+ data.tar.gz: baaa79346e1fae183328ad246781bfa459c6dac83c06299448445b05421b692ddc3027b84b0897e263ad76f6c4017a35b7adf8aa60ec8c4195c6cf3154ac1504
@@ -76,7 +76,7 @@ class ExcelToC < ExcelToX
76
76
  named_references_ast = {}
77
77
  @named_references_to_keep.each do |ref|
78
78
  c_name = ref.is_a?(Array) ? c_name_for(ref) : ["", c_name_for(ref)]
79
- named_references_ast[c_name] = @named_references[ref]
79
+ named_references_ast[c_name] = @named_references[ref] || @table_areas[ref]
80
80
  end
81
81
 
82
82
  c.rewrite(named_references_ast, @worksheet_c_names, o)
@@ -86,7 +86,7 @@ class ExcelToC < ExcelToX
86
86
  c.cells_that_can_be_set_at_runtime = cells_that_can_be_set_at_runtime
87
87
  named_references_ast = {}
88
88
  @named_references_that_can_be_set_at_runtime.each do |ref|
89
- named_references_ast[c_name_for(ref)] = @named_references[ref]
89
+ named_references_ast[c_name_for(ref)] = @named_references[ref] || @table_areas[ref]
90
90
  end
91
91
  c.rewrite(named_references_ast, @worksheet_c_names, o)
92
92
  o.puts "// End of named references"
@@ -46,7 +46,7 @@ class ExcelToRuby < ExcelToX
46
46
  named_references_ast = {}
47
47
  @named_references_to_keep.each do |ref|
48
48
  c_name = ref.is_a?(Array) ? c_name_for(ref) : ["", c_name_for(ref)]
49
- named_references_ast[c_name] = @named_references[ref]
49
+ named_references_ast[c_name] = @named_references[ref] || @table_areas[ref]
50
50
  end
51
51
 
52
52
  c.rewrite(named_references_ast, @worksheet_c_names, o)
@@ -57,7 +57,7 @@ class ExcelToRuby < ExcelToX
57
57
  m.sheet_names = @worksheet_c_names
58
58
  @named_references_that_can_be_set_at_runtime.each do |ref|
59
59
  c_name = c_name_for(ref)
60
- ast = @named_references[ref]
60
+ ast = @named_references[ref] || @table_areas[ref]
61
61
  o.puts " def #{c_name}=(newValue)"
62
62
  o.puts " @#{c_name} = newValue"
63
63
  o.puts m.map(ast)
@@ -32,7 +32,9 @@ class ExcelToX
32
32
  # should be setable, or an array of cell names on that sheet that should be settable (e.g., A1)
33
33
  attr_accessor :cells_that_can_be_set_at_runtime
34
34
 
35
- # Optional attribute. Specifies which named references to be turned into setters
35
+ # Optional attribute. Specifies which named references to be turned into setters.
36
+ #
37
+ # NB: Named references are assumed to include table names.
36
38
  #
37
39
  # Should be an array of strings. Each string is a named reference. Case sensitive.
38
40
  # To specify a named reference scoped to a worksheet, use ['worksheet', 'named reference'] instead
@@ -64,6 +66,8 @@ class ExcelToX
64
66
 
65
67
  # Optional attribute. Specifies which named references should be included in the output
66
68
  #
69
+ # NB: Named references are assumed to include table names.
70
+ #
67
71
  # Should be an array of strings. Each string is a named reference. Case sensitive.
68
72
  #
69
73
  # To specify a named reference scoped to a worksheet, use ['worksheet', 'named reference'] instead
@@ -140,6 +144,9 @@ class ExcelToX
140
144
  # These gets the named references, worksheet names and shared strings out of the excel
141
145
  extract_data_from_workbook
142
146
 
147
+ # This gets all the formulae, values and tables out of the worksheets
148
+ extract_data_from_worksheets
149
+
143
150
  # This checks that the user inputs of which cells to keep are in the right
144
151
  # format and refer to sheets and references that actually exist
145
152
  clean_cells_that_can_be_set_at_runtime
@@ -147,9 +154,6 @@ class ExcelToX
147
154
  clean_named_references_to_keep
148
155
  clean_named_references_that_can_be_set_at_runtime
149
156
 
150
- # This gets all the formulae, values and tables out of the worksheets
151
- extract_data_from_worksheets
152
-
153
157
  # This is an early check that the functions in the extracted data have
154
158
  # all got an implementation in, at least, the ruby code
155
159
  check_all_functions_implemented
@@ -423,7 +427,11 @@ class ExcelToX
423
427
  new_named_references_to_keep = @named_references.keys.select do |named_reference|
424
428
  named_references_to_keep.call(named_reference)
425
429
  end
426
- @named_references_to_keep = new_named_references_to_keep
430
+ table_references_to_keep = @table_areas.keys.select do |table_name|
431
+ named_references_to_keep.call(table_name)
432
+ end
433
+
434
+ @named_references_to_keep = new_named_references_to_keep.concat(table_references_to_keep)
427
435
  end
428
436
 
429
437
  return unless named_references_to_keep.is_a?(Array)
@@ -431,8 +439,8 @@ class ExcelToX
431
439
 
432
440
  # Now we need to check the user specified named references actually exist
433
441
  named_references_to_keep.each.with_index do |named_reference, i|
434
- next if @named_references.has_key?(named_reference)
435
- log.warn "Named reference #{named_reference.inspect} in named_references_to_keep has not been found in the spreadsheet: #{@named_references.keys.inspect}"
442
+ next if @named_references.has_key?(named_reference) || @table_areas.has_key?(named_reference)
443
+ $stderr.puts "Named reference #{named_reference.inspect} in named_references_to_keep has not been found in the spreadsheet: #{@named_references.keys.inspect}"
436
444
  exit
437
445
  end
438
446
  end
@@ -446,7 +454,10 @@ class ExcelToX
446
454
  new_named_references_that_can_be_set_at_runtime = @named_references.keys.select do |named_reference|
447
455
  named_references_that_can_be_set_at_runtime.call(named_reference)
448
456
  end
449
- @named_references_that_can_be_set_at_runtime = new_named_references_that_can_be_set_at_runtime
457
+ table_references_that_can_be_set_at_runtime = @table_areas.keys.select do |table_name|
458
+ named_references_that_can_be_set_at_runtime.call(table_name)
459
+ end
460
+ @named_references_that_can_be_set_at_runtime = new_named_references_that_can_be_set_at_runtime.concat(table_references_that_can_be_set_at_runtime)
450
461
  end
451
462
 
452
463
  return unless named_references_that_can_be_set_at_runtime.is_a?(Array)
@@ -454,8 +465,8 @@ class ExcelToX
454
465
 
455
466
  # Now we need to check the user specified named references actually exist
456
467
  named_references_that_can_be_set_at_runtime.each.with_index do |named_reference, i|
457
- next if @named_references.has_key?(named_reference)
458
- log.error "Named reference #{named_reference.inspect} in named_references_that_can_be_set_at_runtime has not been found in the spreadsheet: #{@named_references.keys.inspect}"
468
+ next if @named_references.has_key?(named_reference) || @table_areas.has_key?(named_reference)
469
+ $stderr.puts "Named reference #{named_reference.inspect} in named_references_that_can_be_set_at_runtime has not been found in the spreadsheet: #{@named_references.keys.inspect}"
459
470
  exit
460
471
  end
461
472
  end
@@ -491,6 +502,7 @@ class ExcelToX
491
502
  @worksheets_dimensions = extractor.worksheets_dimensions
492
503
  @table_rids = extractor.table_rids
493
504
  @tables = {}
505
+ @table_areas = {}
494
506
  extract_tables
495
507
  end
496
508
 
@@ -499,6 +511,7 @@ class ExcelToX
499
511
  # reference and contains the table data. Then we consolidate all the data
500
512
  # from individual table files into a single table file for the worksheet.
501
513
  def extract_tables
514
+ log.info "Extracting Tables"
502
515
  @table_rids.each do |worksheet_name, array_of_table_rids|
503
516
  xml_filename = @worksheet_xmls[worksheet_name]
504
517
  xml_for_rids = {}
@@ -512,11 +525,22 @@ class ExcelToX
512
525
  array_of_table_rids.each do |rid|
513
526
  xml(File.join('worksheets', xml_for_rids[rid])) do |i|
514
527
  ExtractTable.extract(worksheet_name, i).each do |table_name, details|
515
- @tables[table_name.downcase] = Table.new(table_name, *details)
528
+ name = table_name.downcase
529
+ table = Table.new(table_name, *details)
530
+ @tables[name] = table
531
+ @table_areas[name.to_sym] = table.all
516
532
  end
517
533
  end
518
534
  end
519
535
  end
536
+
537
+ # Replace A$1:B2 with [A1, A2, B1, B2]
538
+ @replace_ranges_with_array_literals_replacer ||= ReplaceRangesWithArrayLiteralsAst.new
539
+
540
+ @table_areas.each do |name, reference|
541
+ @table_areas[name] = @replace_ranges_with_array_literals_replacer.map(reference)
542
+ end
543
+
520
544
  end
521
545
 
522
546
  def check_all_functions_implemented
@@ -548,7 +572,7 @@ class ExcelToX
548
572
  log.info "Transfering named references to keep into cells to keep"
549
573
  return unless @named_references_to_keep
550
574
  if @named_references_to_keep == :all
551
- @named_references_to_keep = @named_references.keys
575
+ @named_references_to_keep = @named_references.keys + @table_areas.keys
552
576
  # If the user has specified named_references_to_keep == :all, but there are none, fall back
553
577
  if @named_references_to_keep.empty?
554
578
  log.warn "named_references_to_keep == :all, but no named references found"
@@ -557,7 +581,7 @@ class ExcelToX
557
581
  end
558
582
  @cells_to_keep ||= {}
559
583
  @named_references_to_keep.each do |name|
560
- ref = @named_references[name]
584
+ ref = @named_references[name] || @table_areas[name]
561
585
  if ref
562
586
  add_ref_to_hash(ref, @cells_to_keep)
563
587
  else
@@ -573,7 +597,7 @@ class ExcelToX
573
597
  return if @named_references_that_can_be_set_at_runtime == :where_possible # in this case will be done in #work_out_which_named_references_can_be_set_at_runtime
574
598
  @cells_that_can_be_set_at_runtime ||= {}
575
599
  @named_references_that_can_be_set_at_runtime.each do |name|
576
- ref = @named_references[name]
600
+ ref = @named_references[name] || @table_areas[name]
577
601
  if ref
578
602
  add_ref_to_hash(ref, @cells_that_can_be_set_at_runtime)
579
603
  else
@@ -761,7 +785,7 @@ class ExcelToX
761
785
  # In some situations also need to add the named references
762
786
  if @named_references_to_keep
763
787
  @named_references_to_keep.each do |name|
764
- ref = @named_references[name]
788
+ ref = @named_references[name] || @table_areas[name]
765
789
  if ref.first == :sheet_reference
766
790
  s = ref[1]
767
791
  c = Reference.for(ref[2][1]).unfix.to_sym
@@ -853,11 +877,6 @@ class ExcelToX
853
877
  end
854
878
  end
855
879
 
856
- @named_references.each do |name, ref|
857
- if named_references_that_can_be_set_at_runtime.include?(name)
858
- @named_references_that_can_be_set_at_runtime << name
859
- end
860
- end
861
880
  end
862
881
 
863
882
  def simplify(cells = @formulae)
data/src/excel/table.rb CHANGED
@@ -106,6 +106,10 @@ class Table
106
106
  end
107
107
  end
108
108
  end
109
+
110
+ def all
111
+ ast_for_area @area.excel_start, @area.excel_finish
112
+ end
109
113
 
110
114
  def ast_for_area(start,finish)
111
115
  [:sheet_reference,@worksheet,[:area,start.to_sym,finish.to_sym]]
data/src/excel_to_code.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  class ExcelToCode
2
- def self.version() "0.2.26" end
2
+ def self.version() "0.2.27" end
3
3
  end
4
4
 
5
5
  require_relative 'commands'
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.26
4
+ version: 0.2.27
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-06-10 00:00:00.000000000 Z
11
+ date: 2014-06-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubypeg