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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: eae8b0ae00e74f0315d7d62d76ca89955f75f590
4
- data.tar.gz: b5b44e967bc8af50a21631edda6a3d7d7f1bfe83
3
+ metadata.gz: 80275550c81de031a235d7800725b12a2a4b9866
4
+ data.tar.gz: d08007e6813ca7ca963ae570fd3997a34d563968
5
5
  SHA512:
6
- metadata.gz: 8ae6682e0c402fac52343277a399588a6553eb36f9044248462b07e901eb584fb0e54699d8fbc3488c57b7aa0e002d3d9ec041617d18e5982212eab5b1b4d666
7
- data.tar.gz: 04aec6fb7b56707fcb41912883c8a8a6c524b4eda92f911b798b9ab86be6e36209e03ca78843bed31cecb8b866a90a4cb9d6285f290082d93d09e4771855e9ca
6
+ metadata.gz: d08c8c22504f2368e39f50c97b0b4ed640be75bd1fafa854f34fe52306af84baa899ac80e742253e49013a76214c374596844a14f005752da15bae67cd3d7800
7
+ data.tar.gz: 5dcb6cc6bde6d16d945bade1dfb75b8b613aa93548e53637479c05085d85ba9fa4ae022e45065203d7330a81fec2540d3a288e869c6e1b7578d51a3d2c5f500e
data/changelog.md CHANGED
@@ -5,6 +5,7 @@ Refactor.
5
5
  - 0.3.1 sheet name should as symbol
6
6
  - 0.3.2 support xlsx cell format
7
7
  - 0.3.5 add csv_raw type
8
+ - 0.3.7 add marshal_file type, and load_from_file, save_to_file helper
8
9
 
9
10
  ## 0.2
10
11
 
@@ -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
@@ -1,3 +1,3 @@
1
1
  class DataListConverter
2
- VERSION = "0.3.5".freeze
2
+ VERSION = "0.3.7".freeze
3
3
  end
@@ -1,5 +1,6 @@
1
1
  require 'data_list_converter/base'
2
2
  require 'data_list_converter/version'
3
+ require 'data_list_converter/helper'
3
4
 
4
5
  require 'data_list_converter/types/basic'
5
6
  require 'data_list_converter/types/records'
@@ -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: "test.xlsx"})
68
- @c.convert(:xlsx_file, :item_data, {filename: "test.xlsx"}).must_equal ITEM_DATA
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: 'test.xlsx'})
57
+ xlsx_file: {filename: filename})
72
58
  @c.convert(:xlsx_file, :multi_sheet_table_data,
73
- {filename: 'test.xlsx'},
59
+ {filename: filename},
74
60
  ).must_equal(MULTI_SHEET_TABLE_DATA)
75
61
  ensure
76
- FileUtils.rm_f("test.xlsx")
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.5
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-07 00:00:00.000000000 Z
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