data_list_converter 0.3.5 → 0.3.7

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: 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