data_list_converter 0.4.2 → 0.4.3
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
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ed694a5c72e52682133a22004d381f3968c3d28db54cbeba194eda7c793e70a9
|
4
|
+
data.tar.gz: 656daa9eb323ffa7b7bddb8e40df86606889f091f56c47069f39e37c9f434741
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ad413ccb9e7f0552a39965c69f7924df825eda9933d9acfb83e20455ea03cdd25f34dd8275187190ca868b34fa490c4025c1024820ebf8627345b7e1d6a8d969
|
7
|
+
data.tar.gz: be36997b5d5b37af61e8c5281038ecb8187650ee3d8c506ea852fec5bba8c324a8434e53fe2e2ba729a86deb667376d331aed6194c9cd05286fd636cdbc48219
|
@@ -45,7 +45,7 @@ class DataListConverter
|
|
45
45
|
def convert(from_type, to_type, from_value, options={})
|
46
46
|
methods = []
|
47
47
|
add_filter = lambda { |type|
|
48
|
-
filters = (options[type] || {})
|
48
|
+
filters = (options[type] || {})[:filter]
|
49
49
|
return unless filters
|
50
50
|
methods += normalize_filters(type, filters)
|
51
51
|
}
|
@@ -58,6 +58,7 @@ class DataListConverter
|
|
58
58
|
from_type, to_type = route[i], route[i+1]
|
59
59
|
method = CONVERTERS[[from_type, to_type]]
|
60
60
|
raise "cannot find converter #{from_type} -> #{to_type}" unless method
|
61
|
+
self.log "#{from_type} -> #{to_type} options: #{options[to_type]}"
|
61
62
|
methods.push([method, options[to_type] || {}])
|
62
63
|
add_filter.call(to_type)
|
63
64
|
end
|
@@ -1,14 +1,14 @@
|
|
1
1
|
class DataListConverter
|
2
|
-
def self.save_to_file(filename, data, data_format=:item_data)
|
2
|
+
def self.save_to_file(filename, data, data_format=:item_data, options={})
|
3
3
|
file_format = self.get_file_format(filename)
|
4
|
-
|
5
|
-
|
4
|
+
options[file_format] = {filename: filename}
|
5
|
+
DataListConverter.convert(data_format, file_format, data, options)
|
6
6
|
end
|
7
7
|
|
8
|
-
def self.load_from_file(filename, data_format=:item_data)
|
8
|
+
def self.load_from_file(filename, data_format=:item_data, options={})
|
9
9
|
file_format = self.get_file_format(filename)
|
10
|
-
|
11
|
-
|
10
|
+
options[:filename] = filename
|
11
|
+
DataListConverter.convert(file_format, data_format, options)
|
12
12
|
end
|
13
13
|
|
14
14
|
def self.get_file_format(filename)
|
@@ -19,8 +19,9 @@ class DataListConverter
|
|
19
19
|
:"multi_sheet_#{from_type}",
|
20
20
|
:"multi_sheet_#{to_type}",
|
21
21
|
) do |data, options|
|
22
|
+
self.log("multi_sheet #{from_type} -> #{to_type} with options: #{options}")
|
22
23
|
data.map do |sheet, from_data|
|
23
|
-
to_data = self.convert(from_type, to_type, from_data)
|
24
|
+
to_data = self.convert(from_type, to_type, from_data, options)
|
24
25
|
[sheet, to_data]
|
25
26
|
end.to_h
|
26
27
|
end
|
data/test/filters_test.rb
CHANGED
@@ -26,12 +26,30 @@ describe DataListConverter do
|
|
26
26
|
string = StringIO.new
|
27
27
|
filter = {count: {size: 4000,
|
28
28
|
out: string,
|
29
|
-
msg: "%{percent}
|
29
|
+
msg: "%{percent}%%"}}
|
30
30
|
result = DataListConverter.convert(
|
31
31
|
:item_iterator, :table_data, iter,
|
32
32
|
item_iterator: {filter: filter})
|
33
33
|
string.string.split("\n").must_equal ['total: 10000', '40.0%', '80.0%']
|
34
34
|
end
|
35
35
|
end
|
36
|
+
|
37
|
+
describe :remove_debug do
|
38
|
+
specify do
|
39
|
+
filter = {remove_debug: true}
|
40
|
+
item_data = [{name: "james", debug: "", a: 12}] * 2
|
41
|
+
result = DataListConverter.convert(
|
42
|
+
:item_data, :table_data, item_data,
|
43
|
+
table_iterator: {filter: filter})
|
44
|
+
result.must_equal [["name"], ["james"], ["james"]]
|
45
|
+
|
46
|
+
# check on multi_sheet
|
47
|
+
item_data = {a: [{name: "james", debug: "", a: 12}] * 2, b: [{name: 'cc', debug: "", b: 3}]*3}
|
48
|
+
result = DataListConverter.convert(
|
49
|
+
:multi_sheet_item_data, :multi_sheet_table_data, item_data,
|
50
|
+
multi_sheet_table_iterator: {table_iterator: {filter: {remove_debug: true}}})
|
51
|
+
result.must_equal(a: [["name"], ["james"], ["james"]], b: [["name"], ["cc"], ["cc"], ["cc"]])
|
52
|
+
end
|
53
|
+
end
|
36
54
|
|
37
55
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: data_list_converter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- linjunhalida
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-08-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -160,8 +160,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
160
160
|
- !ruby/object:Gem::Version
|
161
161
|
version: '0'
|
162
162
|
requirements: []
|
163
|
-
|
164
|
-
rubygems_version: 2.7.3
|
163
|
+
rubygems_version: 3.0.6
|
165
164
|
signing_key:
|
166
165
|
specification_version: 4
|
167
166
|
summary: convert data between different formats
|