rggen-spreadsheet-loader 0.15.1 → 0.19.0
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/LICENSE +1 -1
- data/README.md +1 -1
- data/lib/rggen/spreadsheet_loader.rb +6 -4
- data/lib/rggen/spreadsheet_loader/csv_loader.rb +7 -2
- data/lib/rggen/spreadsheet_loader/setup.rb +5 -1
- data/lib/rggen/spreadsheet_loader/spreadsheet_loader.rb +48 -61
- data/lib/rggen/spreadsheet_loader/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9a9e3cd2d0e9852524f09edcecf3d62cab2a6b496f4f59571052cb0c7b879aba
|
4
|
+
data.tar.gz: 491fb225fd336ccc3640d1359849fe0383850e1d94b0a70502dbccdec111191d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 88dd693a44503622b944dc5ddead75f8c1845ba48ab8dd9c7e1ff2d69096f6e491ae6dbb67ad0f96015e9dcdbc8dfd04761ced92a289cff893f13fbbad04dc91
|
7
|
+
data.tar.gz: e1544ef459e4f3dc3a4ade4e8d5396b66d9be1f4eaac30adaf77e0330c9bd08567ed8ae520712e77c77edd2831aaafb06665ece1f94dc5a7f8cd475df20bfe5a
|
data/LICENSE
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
The MIT License (MIT)
|
2
2
|
|
3
|
-
Copyright (c) 2019-
|
3
|
+
Copyright (c) 2019-2021 Taichi Ishitani
|
4
4
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
data/README.md
CHANGED
@@ -40,7 +40,7 @@ Feedbacks, bug reports, questions and etc. are wellcome! You can post them by us
|
|
40
40
|
|
41
41
|
## Copyright & License
|
42
42
|
|
43
|
-
Copyright © 2019-
|
43
|
+
Copyright © 2019-2021 Taichi Ishitani. RgGen::SpreadsheetLoader is licensed under the [MIT License](https://opensource.org/licenses/MIT), see [LICENSE](LICENSE) for futher details.
|
44
44
|
|
45
45
|
## Code of Conduct
|
46
46
|
|
@@ -13,10 +13,12 @@ require_relative 'spreadsheet_loader/xls_loader'
|
|
13
13
|
|
14
14
|
module RgGen
|
15
15
|
module SpreadsheetLoader
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
16
|
+
extend Core::Plugin
|
17
|
+
|
18
|
+
setup_plugin :'rggen-spreadsheet-loader' do |plugin|
|
19
|
+
plugin.register_loader :register_map, :spreadsheet, CSVLoader
|
20
|
+
plugin.register_loader :register_map, :spreadsheet, RooLoader
|
21
|
+
plugin.register_loader :register_map, :spreadsheet, XLSLoader
|
20
22
|
end
|
21
23
|
end
|
22
24
|
end
|
@@ -5,7 +5,7 @@ module RgGen
|
|
5
5
|
class CSVLoader < Core::RegisterMap::Loader
|
6
6
|
include SpreadsheetLoader
|
7
7
|
|
8
|
-
support_types [:csv]
|
8
|
+
support_types [:csv, :tsv]
|
9
9
|
|
10
10
|
def read_spreadsheet(file, book)
|
11
11
|
sheet = read_csv(file)
|
@@ -17,7 +17,12 @@ module RgGen
|
|
17
17
|
|
18
18
|
def read_csv(file)
|
19
19
|
require 'csv'
|
20
|
-
CSV.read(file)
|
20
|
+
CSV.read(file, col_sep: separator(file))
|
21
|
+
end
|
22
|
+
|
23
|
+
def separator(file)
|
24
|
+
ext = File.extname(file)
|
25
|
+
ext.casecmp?('.tsv') && "\t" || ','
|
21
26
|
end
|
22
27
|
end
|
23
28
|
end
|
@@ -1,4 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'rggen/spreadsheet_loader'
|
4
|
-
|
4
|
+
|
5
|
+
RgGen.register_plugin RgGen::SpreadsheetLoader do |builder|
|
6
|
+
builder.ignore_value :register_map, :spreadsheet, :register_block, :comment
|
7
|
+
builder.ignore_value :register_map, :spreadsheet, :register, :comment
|
8
|
+
end
|
@@ -9,72 +9,71 @@ module RgGen
|
|
9
9
|
Spreadsheet::Book.new(file) { |book| read_spreadsheet(file, book) }
|
10
10
|
end
|
11
11
|
|
12
|
-
def format(book, _file)
|
13
|
-
book.sheets.each(&method(:process_sheet))
|
14
|
-
end
|
15
|
-
|
16
12
|
private
|
17
13
|
|
18
|
-
def
|
19
|
-
|
20
|
-
|
21
|
-
.rows(register_start_position.row)
|
22
|
-
.reject { |row| row.cells.all?(&:empty_cell?) }
|
23
|
-
.each { |row| process_row(row, register_block) }
|
14
|
+
def format_layer_data(read_data, layer, _file)
|
15
|
+
return if layer == :root
|
16
|
+
collect_layer_data(read_data, layer)
|
24
17
|
end
|
25
18
|
|
26
|
-
def
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
.each { |value_name, cell| value(value_name, cell) }
|
31
|
-
end
|
19
|
+
def collect_layer_data(read_data, layer)
|
20
|
+
values = valid_values(layer)
|
21
|
+
cells = __send__("#{layer}_cells", read_data)
|
22
|
+
values.zip(cells).to_h
|
32
23
|
end
|
33
24
|
|
34
25
|
def register_block_cells(sheet)
|
35
26
|
start_row = register_block_start_position.row
|
36
27
|
start_column = register_block_start_position.column
|
37
|
-
Array.new(
|
28
|
+
Array.new(valid_values(:register_block).size) do |i|
|
38
29
|
sheet[start_row + i, start_column]
|
39
30
|
end
|
40
31
|
end
|
41
32
|
|
42
|
-
def
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
else
|
47
|
-
parse_register(row, register_block)
|
48
|
-
end
|
49
|
-
parse_bit_field(row, register)
|
33
|
+
def register_cells(rows)
|
34
|
+
start_column = register_start_position.column
|
35
|
+
size = valid_values(:register).size
|
36
|
+
rows.first.cells(start_column, size)
|
50
37
|
end
|
51
38
|
|
52
|
-
def
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
.each { |value_name, cell| value(value_name, cell) }
|
57
|
-
end
|
39
|
+
def bit_field_cells(row)
|
40
|
+
start_column = bit_field_start_position.column
|
41
|
+
size = valid_values(:bit_field).size
|
42
|
+
row.cells(start_column, size)
|
58
43
|
end
|
59
44
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
45
|
+
SUB_LAYERS = {
|
46
|
+
root: :register_block,
|
47
|
+
register_block: :register,
|
48
|
+
register: :bit_field
|
49
|
+
}.freeze
|
50
|
+
|
51
|
+
def format_sub_layer_data(read_data, layer, _file)
|
52
|
+
sub_layer = SUB_LAYERS[layer]
|
53
|
+
sub_layer && { sub_layer => __send__("collect_#{sub_layer}_data", read_data) }
|
64
54
|
end
|
65
55
|
|
66
|
-
def
|
67
|
-
|
68
|
-
bit_field_valid_values
|
69
|
-
.zip(bit_field_cells(row))
|
70
|
-
.each { |value_name, cell| value(value_name, cell) }
|
71
|
-
end
|
56
|
+
def collect_register_block_data(book)
|
57
|
+
book.sheets
|
72
58
|
end
|
73
59
|
|
74
|
-
def
|
75
|
-
|
76
|
-
|
77
|
-
|
60
|
+
def collect_register_data(sheet)
|
61
|
+
sheet.rows(register_start_position.row)
|
62
|
+
.reject { |row| row.cells.all?(&:empty_cell?) }
|
63
|
+
.each_with_object([], &method(:collect_register_rows))
|
64
|
+
end
|
65
|
+
|
66
|
+
def collect_register_rows(row, row_sets)
|
67
|
+
register_begin?(row) && (row_sets << [])
|
68
|
+
row_sets.last << row
|
69
|
+
end
|
70
|
+
|
71
|
+
def register_begin?(row)
|
72
|
+
!row[register_start_position.column].empty_cell?
|
73
|
+
end
|
74
|
+
|
75
|
+
def collect_bit_field_data(rows)
|
76
|
+
rows
|
78
77
|
end
|
79
78
|
|
80
79
|
def register_block_start_position
|
@@ -83,28 +82,16 @@ module RgGen
|
|
83
82
|
|
84
83
|
def register_start_position
|
85
84
|
@register_start_position ||=
|
86
|
-
Position.new(
|
85
|
+
Position.new(valid_values(:register_block).size + 2, 1)
|
87
86
|
end
|
88
87
|
|
89
88
|
def bit_field_start_position
|
90
89
|
@bit_field_start_position ||=
|
91
|
-
|
92
|
-
column =
|
93
|
-
register_start_position.column + register_valid_values.size
|
94
|
-
Position.new(0, column)
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
|
-
def register_block_valid_values
|
99
|
-
valid_value_lists[1]
|
100
|
-
end
|
101
|
-
|
102
|
-
def register_valid_values
|
103
|
-
valid_value_lists[2]
|
90
|
+
Position.new(0, bit_field_start_column)
|
104
91
|
end
|
105
92
|
|
106
|
-
def
|
107
|
-
|
93
|
+
def bit_field_start_column
|
94
|
+
register_start_position.column + valid_values(:register).size
|
108
95
|
end
|
109
96
|
end
|
110
97
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rggen-spreadsheet-loader
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.19.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Taichi Ishitani
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-01-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: roo
|
@@ -97,8 +97,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
97
97
|
- !ruby/object:Gem::Version
|
98
98
|
version: '0'
|
99
99
|
requirements: []
|
100
|
-
rubygems_version: 3.
|
100
|
+
rubygems_version: 3.2.3
|
101
101
|
signing_key:
|
102
102
|
specification_version: 4
|
103
|
-
summary: rggen-spreadsheet-loader-0.
|
103
|
+
summary: rggen-spreadsheet-loader-0.19.0
|
104
104
|
test_files: []
|