data_list_converter 0.3.5 → 0.3.7
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/changelog.md +1 -0
- data/lib/data_list_converter/base.rb +0 -4
- data/lib/data_list_converter/helper.rb +32 -0
- data/lib/data_list_converter/types/marshal.rb +25 -0
- data/lib/data_list_converter/version.rb +1 -1
- data/lib/data_list_converter.rb +1 -0
- data/test/helper_test.rb +65 -0
- data/test/types_test.rb +25 -21
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 80275550c81de031a235d7800725b12a2a4b9866
|
4
|
+
data.tar.gz: d08007e6813ca7ca963ae570fd3997a34d563968
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d08c8c22504f2368e39f50c97b0b4ed640be75bd1fafa854f34fe52306af84baa899ac80e742253e49013a76214c374596844a14f005752da15bae67cd3d7800
|
7
|
+
data.tar.gz: 5dcb6cc6bde6d16d945bade1dfb75b8b613aa93548e53637479c05085d85ba9fa4ae022e45065203d7330a81fec2540d3a288e869c6e1b7578d51a3d2c5f500e
|
data/changelog.md
CHANGED
@@ -21,10 +21,6 @@ class DataListConverter
|
|
21
21
|
puts "#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}\t#{msg}"
|
22
22
|
end
|
23
23
|
|
24
|
-
def types
|
25
|
-
CONVERTERS.keys.flatten.uniq.sort
|
26
|
-
end
|
27
|
-
|
28
24
|
def register_converter(from_type, to_type, &block)
|
29
25
|
@route_map = nil # clear cache
|
30
26
|
CONVERTERS[[from_type, to_type]] = block
|
@@ -0,0 +1,32 @@
|
|
1
|
+
class DataListConverter
|
2
|
+
def self.save_to_file(filename, data, data_format=:item_data)
|
3
|
+
file_format = self.get_file_format(filename)
|
4
|
+
DataListConverter.convert(data_format, file_format, data,
|
5
|
+
file_format => {filename: filename})
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.load_from_file(filename, data_format=:item_data)
|
9
|
+
file_format = self.get_file_format(filename)
|
10
|
+
DataListConverter.convert(file_format, data_format,
|
11
|
+
{filename: filename})
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.get_file_format(filename)
|
15
|
+
file_type = (File.extname(filename)[1..-1] + "_file").to_sym
|
16
|
+
unless DataListConverter.file_types.include?(file_type)
|
17
|
+
raise "unknown file format: #{file_type}"
|
18
|
+
end
|
19
|
+
file_type
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.types
|
23
|
+
CONVERTERS.keys.flatten.uniq.sort
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.file_types
|
27
|
+
matcher = /(.*)_file$/
|
28
|
+
DataListConverter.types.select do |type|
|
29
|
+
matcher.match(type)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
class DataListConverter
|
2
|
+
|
3
|
+
def self.marshal_file_to_data(input, options=nil)
|
4
|
+
File.open(input[:filename]) do |f|
|
5
|
+
Marshal.load(f)
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.marshal_data_to_file(data, options)
|
10
|
+
File.open(options[:filename], 'w+') do |f|
|
11
|
+
Marshal.dump(data, f)
|
12
|
+
end
|
13
|
+
options[:filename]
|
14
|
+
end
|
15
|
+
|
16
|
+
[:table_data, :multi_sheet_table_data].each do |type|
|
17
|
+
self.register_converter(:marshal_file, type) do |input, options|
|
18
|
+
self.marshal_file_to_data(input, options)
|
19
|
+
end
|
20
|
+
self.register_converter(type, :marshal_file) do |data, options|
|
21
|
+
self.marshal_data_to_file(data, options)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
data/lib/data_list_converter.rb
CHANGED
data/test/helper_test.rb
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'data_list_converter/types/csv_file'
|
2
|
+
require 'data_list_converter/types/xls_file'
|
3
|
+
require 'data_list_converter/types/xlsx_file'
|
4
|
+
require 'data_list_converter/types/marshal'
|
5
|
+
|
6
|
+
describe DataListConverter do
|
7
|
+
|
8
|
+
before :all do
|
9
|
+
@c = DataListConverter
|
10
|
+
end
|
11
|
+
|
12
|
+
describe :types do
|
13
|
+
specify do
|
14
|
+
@c.types.must_equal(
|
15
|
+
[:item_data, :item_iterator,
|
16
|
+
:table_data, :table_iterator,
|
17
|
+
:multi_sheet_item_data,
|
18
|
+
:multi_sheet_table_data,
|
19
|
+
:multi_sheet_item_iterator,
|
20
|
+
:multi_sheet_table_iterator,
|
21
|
+
:marshal_file,
|
22
|
+
:csv_file, :csv_raw, :xls_file, :xlsx_file,
|
23
|
+
:records,
|
24
|
+
].sort
|
25
|
+
)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe :file_types do
|
30
|
+
specify do
|
31
|
+
@c.file_types.must_equal(
|
32
|
+
[
|
33
|
+
:csv_file, :xlsx_file, :xls_file, :marshal_file
|
34
|
+
].sort
|
35
|
+
)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
describe :get_file_format do
|
40
|
+
specify do
|
41
|
+
@c.get_file_format('sss.xlsx').must_equal(:xlsx_file)
|
42
|
+
@c.get_file_format('sss.csv').must_equal(:csv_file)
|
43
|
+
@c.get_file_format('sss.marshal').must_equal(:marshal_file)
|
44
|
+
-> { @c.get_file_format('sss.bak') }.must_raise RuntimeError
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
describe :load_and_save_to_file do
|
49
|
+
specify do
|
50
|
+
filename = 'result.csv'
|
51
|
+
begin
|
52
|
+
data = [{a: '12', b: '3'}, {a: '1', b: '4'}]
|
53
|
+
@c.save_to_file(filename, data)
|
54
|
+
@c.load_from_file(filename).must_equal(data)
|
55
|
+
|
56
|
+
table_data = [['a', 'b'], ['a1', 'b1']]
|
57
|
+
@c.save_to_file(filename, table_data, :table_data)
|
58
|
+
@c.load_from_file(filename, :table_data).must_equal(table_data)
|
59
|
+
ensure
|
60
|
+
FileUtils.rm_rf(filename)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
data/test/types_test.rb
CHANGED
@@ -1,28 +1,13 @@
|
|
1
1
|
require 'data_list_converter/types/csv_file'
|
2
2
|
require 'data_list_converter/types/xls_file'
|
3
3
|
require 'data_list_converter/types/xlsx_file'
|
4
|
+
require 'data_list_converter/types/marshal'
|
4
5
|
|
5
6
|
describe DataListConverter do
|
6
7
|
before :all do
|
7
8
|
@c = DataListConverter
|
8
9
|
end
|
9
10
|
|
10
|
-
describe :type do
|
11
|
-
specify do
|
12
|
-
DataListConverter.types.must_equal(
|
13
|
-
[:item_data, :item_iterator,
|
14
|
-
:table_data, :table_iterator,
|
15
|
-
:multi_sheet_item_data,
|
16
|
-
:multi_sheet_table_data,
|
17
|
-
:multi_sheet_item_iterator,
|
18
|
-
:multi_sheet_table_iterator,
|
19
|
-
:csv_file, :csv_raw, :xls_file, :xlsx_file,
|
20
|
-
:records,
|
21
|
-
].sort
|
22
|
-
)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
11
|
describe :multi_sheet do
|
27
12
|
specify do
|
28
13
|
@c.convert(:multi_sheet_item_data, :multi_sheet_table_data, MULTI_SHEET_ITEM_DATA).must_equal(MULTI_SHEET_TABLE_DATA)
|
@@ -63,17 +48,18 @@ describe DataListConverter do
|
|
63
48
|
|
64
49
|
describe :xlsx_file do
|
65
50
|
specify do
|
51
|
+
filename = 'test.xlsx'
|
66
52
|
begin
|
67
|
-
@c.convert(:item_data, :xlsx_file, ITEM_DATA, xlsx_file: {filename:
|
68
|
-
@c.convert(:xlsx_file, :item_data, {filename:
|
53
|
+
@c.convert(:item_data, :xlsx_file, ITEM_DATA, xlsx_file: {filename: filename})
|
54
|
+
@c.convert(:xlsx_file, :item_data, {filename: filename}).must_equal ITEM_DATA
|
69
55
|
|
70
56
|
@c.convert(:multi_sheet_table_data, :xlsx_file, MULTI_SHEET_TABLE_DATA,
|
71
|
-
xlsx_file: {filename:
|
57
|
+
xlsx_file: {filename: filename})
|
72
58
|
@c.convert(:xlsx_file, :multi_sheet_table_data,
|
73
|
-
{filename:
|
59
|
+
{filename: filename},
|
74
60
|
).must_equal(MULTI_SHEET_TABLE_DATA)
|
75
61
|
ensure
|
76
|
-
FileUtils.rm_f(
|
62
|
+
FileUtils.rm_f(filename)
|
77
63
|
end
|
78
64
|
end
|
79
65
|
|
@@ -92,4 +78,22 @@ describe DataListConverter do
|
|
92
78
|
end
|
93
79
|
end
|
94
80
|
end
|
81
|
+
|
82
|
+
describe :marshal do
|
83
|
+
specify do
|
84
|
+
filename = 'test.marshal'
|
85
|
+
begin
|
86
|
+
@c.convert(:item_data, :marshal_file, ITEM_DATA, marshal_file: {filename: filename})
|
87
|
+
@c.convert(:marshal_file, :item_data, {filename: filename}).must_equal ITEM_DATA
|
88
|
+
@c.convert(:multi_sheet_table_data, :marshal_file, MULTI_SHEET_TABLE_DATA,
|
89
|
+
marshal_file: {filename: filename})
|
90
|
+
@c.convert(:marshal_file, :multi_sheet_table_data,
|
91
|
+
{filename: filename},
|
92
|
+
).must_equal(MULTI_SHEET_TABLE_DATA)
|
93
|
+
ensure
|
94
|
+
FileUtils.rm_f(filename)
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
95
99
|
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.3.
|
4
|
+
version: 0.3.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- linjunhalida
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-04-
|
11
|
+
date: 2016-04-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -99,8 +99,10 @@ files:
|
|
99
99
|
- lib/data_list_converter/filters/count.rb
|
100
100
|
- lib/data_list_converter/filters/limit.rb
|
101
101
|
- lib/data_list_converter/filters/remove_debug.rb
|
102
|
+
- lib/data_list_converter/helper.rb
|
102
103
|
- lib/data_list_converter/types/basic.rb
|
103
104
|
- lib/data_list_converter/types/csv_file.rb
|
105
|
+
- lib/data_list_converter/types/marshal.rb
|
104
106
|
- lib/data_list_converter/types/multi_sheet.rb
|
105
107
|
- lib/data_list_converter/types/records.rb
|
106
108
|
- lib/data_list_converter/types/xls_file.rb
|
@@ -108,6 +110,7 @@ files:
|
|
108
110
|
- lib/data_list_converter/version.rb
|
109
111
|
- test/base_test.rb
|
110
112
|
- test/filters_test.rb
|
113
|
+
- test/helper_test.rb
|
111
114
|
- test/testdata.rb
|
112
115
|
- test/types_test.rb
|
113
116
|
homepage: http://github.com/halida/data_list_converter
|
@@ -137,5 +140,6 @@ summary: convert data between different formats
|
|
137
140
|
test_files:
|
138
141
|
- test/base_test.rb
|
139
142
|
- test/filters_test.rb
|
143
|
+
- test/helper_test.rb
|
140
144
|
- test/testdata.rb
|
141
145
|
- test/types_test.rb
|