datashift 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. data/.document +5 -5
  2. data/LICENSE.txt +26 -26
  3. data/README.markdown +326 -305
  4. data/README.rdoc +19 -19
  5. data/Rakefile +86 -93
  6. data/VERSION +1 -1
  7. data/datashift.gemspec +163 -152
  8. data/lib/applications/jruby/jexcel_file.rb +410 -408
  9. data/lib/applications/jruby/word.rb +79 -79
  10. data/lib/datashift.rb +183 -152
  11. data/lib/datashift/exceptions.rb +11 -11
  12. data/lib/datashift/file_definitions.rb +353 -353
  13. data/lib/datashift/mapping_file_definitions.rb +87 -87
  14. data/lib/datashift/method_detail.rb +293 -275
  15. data/lib/datashift/method_dictionary.rb +208 -209
  16. data/lib/datashift/method_mapper.rb +90 -90
  17. data/lib/datashift/model_mapper.rb +27 -0
  18. data/lib/exporters/csv_exporter.rb +36 -0
  19. data/lib/exporters/excel_exporter.rb +116 -0
  20. data/lib/exporters/exporter_base.rb +15 -0
  21. data/lib/generators/csv_generator.rb +36 -36
  22. data/lib/generators/excel_generator.rb +106 -122
  23. data/lib/generators/generator_base.rb +13 -13
  24. data/lib/helpers/core_ext/to_b.rb +24 -24
  25. data/lib/helpers/rake_utils.rb +42 -0
  26. data/lib/helpers/spree_helper.rb +194 -153
  27. data/lib/java/poi-3.7/LICENSE +507 -507
  28. data/lib/java/poi-3.7/NOTICE +21 -21
  29. data/lib/java/poi-3.7/RELEASE_NOTES.txt +115 -115
  30. data/lib/loaders/csv_loader.rb +98 -98
  31. data/lib/loaders/excel_loader.rb +155 -155
  32. data/lib/loaders/loader_base.rb +420 -420
  33. data/lib/loaders/spreadsheet_loader.rb +136 -136
  34. data/lib/loaders/spree/image_loader.rb +67 -63
  35. data/lib/loaders/spree/product_loader.rb +289 -248
  36. data/lib/thor/generate_excel.thor +54 -0
  37. data/sandbox/app/controllers/application_controller.rb +3 -0
  38. data/sandbox/config/application.rb +43 -0
  39. data/sandbox/config/database.yml +34 -0
  40. data/sandbox/config/environment.rb +7 -0
  41. data/sandbox/config/environments/development.rb +30 -0
  42. data/spec/csv_loader_spec.rb +30 -30
  43. data/spec/datashift_spec.rb +26 -26
  44. data/spec/db/migrate/20110803201325_create_test_bed.rb +85 -85
  45. data/spec/excel_exporter_spec.rb +78 -78
  46. data/spec/excel_generator_spec.rb +78 -78
  47. data/spec/excel_loader_spec.rb +223 -223
  48. data/spec/file_definitions.rb +141 -141
  49. data/spec/fixtures/ProjectsDefaults.yml +29 -29
  50. data/spec/fixtures/config/database.yml +27 -27
  51. data/spec/fixtures/datashift_Spree_db.sqlite +0 -0
  52. data/spec/fixtures/datashift_test_models_db.sqlite +0 -0
  53. data/spec/fixtures/negative/SpreeProdMiss1Mandatory.csv +4 -4
  54. data/spec/fixtures/negative/SpreeProdMissManyMandatory.csv +4 -4
  55. data/spec/fixtures/spree/SpreeProducts.csv +4 -4
  56. data/spec/fixtures/spree/SpreeProducts.xls +0 -0
  57. data/spec/fixtures/spree/SpreeProductsMultiColumn.csv +4 -4
  58. data/spec/fixtures/spree/SpreeProductsMultiColumn.xls +0 -0
  59. data/spec/fixtures/spree/SpreeProductsSimple.csv +4 -4
  60. data/spec/fixtures/spree/SpreeProductsWithImages.csv +4 -4
  61. data/spec/fixtures/spree/SpreeZoneExample.csv +5 -5
  62. data/spec/fixtures/test_model_defs.rb +57 -57
  63. data/spec/loader_spec.rb +120 -120
  64. data/spec/method_dictionary_spec.rb +242 -242
  65. data/spec/method_mapper_spec.rb +41 -41
  66. data/spec/spec_helper.rb +154 -116
  67. data/spec/spree_exporter_spec.rb +67 -0
  68. data/spec/spree_generator_spec.rb +77 -64
  69. data/spec/spree_loader_spec.rb +363 -324
  70. data/spec/spree_method_mapping_spec.rb +218 -214
  71. data/tasks/config/seed_fu_product_template.erb +15 -15
  72. data/tasks/config/tidy_config.txt +12 -12
  73. data/tasks/{excel_generator.rake → export/excel_generator.rake} +101 -78
  74. data/tasks/file_tasks.rake +36 -36
  75. data/tasks/import/csv.rake +50 -49
  76. data/tasks/import/excel.rake +74 -71
  77. data/tasks/spree/image_load.rake +108 -108
  78. data/tasks/spree/product_loader.rake +43 -43
  79. data/tasks/word_to_seedfu.rake +166 -166
  80. data/test/helper.rb +18 -18
  81. data/test/test_interact.rb +7 -7
  82. metadata +16 -8
  83. data/datashift-0.1.0.gem +0 -0
  84. data/tasks/db_tasks.rake +0 -66
@@ -1,141 +1,141 @@
1
- # To change this template, choose Tools | Templates
2
- # and open the template in the editor.
3
-
4
- $:.unshift File.join(File.dirname(__FILE__),'..','lib')
5
- $:.unshift File.join(File.dirname(__FILE__),'..','lib', 'engine')
6
-
7
- require 'test/unit'
8
- require 'file_definitions'
9
-
10
- class File_definitions < Test::Unit::TestCase
11
-
12
- def setup
13
- end
14
-
15
- def test_fields_string
16
- klass = Object.const_set('B', Class.new)
17
-
18
- klass.module_eval do
19
- include FileDefinitions
20
- create_field_definition 'a_string'
21
-
22
- create_field_attr_accessors
23
- end
24
-
25
- x = B.new '33'
26
- assert_equal '33', x.a_string
27
-
28
- end
29
-
30
-
31
- def test_fields_symbols
32
- klass = Object.const_set('SymClass', Class.new)
33
- klass.module_eval do
34
- include FileDefinitions
35
- create_field_definition [:a_symbol, :b_symbol]
36
-
37
- create_field_attr_accessors
38
- end
39
-
40
- assert SymClass.new.respond_to? :a_symbol
41
- assert SymClass.new.respond_to? :b_symbol
42
- end
43
-
44
- def test_fields_strings
45
- klass = Object.const_set('A', Class.new)
46
- klass.module_eval do
47
- include FileDefinitions
48
- create_field_definition %w{abc def ghi jkl}
49
-
50
- create_field_attr_accessors
51
- end
52
-
53
- x = A.new
54
-
55
- assert_equal ["abc", "def", "ghi", "jkl"], A.field_definition.sort
56
-
57
- A::add_field( "xyz" )
58
-
59
- line = '1,2,3,4, 5'
60
- x = A.new(line)
61
-
62
- assert x.respond_to? 'abc'
63
- assert x.respond_to? 'abc='
64
- assert x.respond_to? :jkl
65
- assert_equal x.current_line, line
66
- assert_equal '1', x.abc
67
- assert_equal 1.0, x.abc.to_f
68
- assert_equal 1, x.abc.to_i
69
- assert_equal '4', x.jkl
70
- assert_equal ' 5', x.xyz
71
-
72
- end
73
-
74
- def test_fixed_strings
75
-
76
- klass = Object.const_set('AFixed', Class.new)
77
-
78
- klass.module_eval do
79
- include FileDefinitions
80
-
81
- create_fixed_definition( 'value' => (0..7), 'date' => (8..15), :ccy => (16..18) )
82
-
83
- create_field_attr_accessors
84
- end
85
-
86
- assert AFixed.respond_to?('fixed_definition')
87
- assert AFixed.respond_to?('field_definition')
88
- assert AFixed.respond_to?('add_field')
89
- assert AFixed.respond_to?('file_set_field_by_map')
90
- assert AFixed.respond_to?('split_on')
91
- assert AFixed.respond_to?('split_on_write')
92
-
93
- x = AFixed.new('0123456719990113EUR')
94
-
95
- assert x.respond_to?('value')
96
- assert x.respond_to?(:date)
97
- assert x.respond_to?('ccy')
98
-
99
- assert AFixed.field_definition.include?('ccy')
100
-
101
- assert_equal 3, AFixed.field_definition.size
102
- assert_equal 3, AFixed.fixed_definition.keys.size
103
-
104
- assert_equal ["ccy", "date", "value"], AFixed.field_definition.sort
105
-
106
- assert_equal AFixed.field_definition.sort, AFixed.fixed_definition.keys.sort
107
-
108
- assert_instance_of Range, AFixed.fixed_definition.values[0]
109
-
110
- assert_equal x.current_line, '0123456719990113EUR'
111
- assert_equal x.value, '01234567'
112
- assert_equal x.date, '19990113'
113
- assert_equal x.ccy, 'EUR'
114
-
115
- assert x.respond_to?(:parse)
116
-
117
- x.parse('9876543220100630USD')
118
-
119
- assert_equal x.current_line, '9876543220100630USD'
120
- assert_equal x.value, '98765432'
121
- assert_equal x.date, '20100630'
122
- assert_equal x.ccy, 'USD'
123
-
124
- end
125
-
126
- def test_bad_setup
127
- klass = Object.const_set('ABadClass', Class.new)
128
- begin
129
- klass.module_eval do
130
- include FileDefinitions
131
-
132
- create_fixed_definition( 'abc' )
133
-
134
- create_field_attr_accessors
135
- end
136
- flunk # We should never get here
137
- rescue => e
138
- assert e
139
- end
140
- end
141
- end
1
+ # To change this template, choose Tools | Templates
2
+ # and open the template in the editor.
3
+
4
+ $:.unshift File.join(File.dirname(__FILE__),'..','lib')
5
+ $:.unshift File.join(File.dirname(__FILE__),'..','lib', 'engine')
6
+
7
+ require 'test/unit'
8
+ require 'file_definitions'
9
+
10
+ class File_definitions < Test::Unit::TestCase
11
+
12
+ def setup
13
+ end
14
+
15
+ def test_fields_string
16
+ klass = Object.const_set('B', Class.new)
17
+
18
+ klass.module_eval do
19
+ include FileDefinitions
20
+ create_field_definition 'a_string'
21
+
22
+ create_field_attr_accessors
23
+ end
24
+
25
+ x = B.new '33'
26
+ assert_equal '33', x.a_string
27
+
28
+ end
29
+
30
+
31
+ def test_fields_symbols
32
+ klass = Object.const_set('SymClass', Class.new)
33
+ klass.module_eval do
34
+ include FileDefinitions
35
+ create_field_definition [:a_symbol, :b_symbol]
36
+
37
+ create_field_attr_accessors
38
+ end
39
+
40
+ assert SymClass.new.respond_to? :a_symbol
41
+ assert SymClass.new.respond_to? :b_symbol
42
+ end
43
+
44
+ def test_fields_strings
45
+ klass = Object.const_set('A', Class.new)
46
+ klass.module_eval do
47
+ include FileDefinitions
48
+ create_field_definition %w{abc def ghi jkl}
49
+
50
+ create_field_attr_accessors
51
+ end
52
+
53
+ x = A.new
54
+
55
+ assert_equal ["abc", "def", "ghi", "jkl"], A.field_definition.sort
56
+
57
+ A::add_field( "xyz" )
58
+
59
+ line = '1,2,3,4, 5'
60
+ x = A.new(line)
61
+
62
+ assert x.respond_to? 'abc'
63
+ assert x.respond_to? 'abc='
64
+ assert x.respond_to? :jkl
65
+ assert_equal x.current_line, line
66
+ assert_equal '1', x.abc
67
+ assert_equal 1.0, x.abc.to_f
68
+ assert_equal 1, x.abc.to_i
69
+ assert_equal '4', x.jkl
70
+ assert_equal ' 5', x.xyz
71
+
72
+ end
73
+
74
+ def test_fixed_strings
75
+
76
+ klass = Object.const_set('AFixed', Class.new)
77
+
78
+ klass.module_eval do
79
+ include FileDefinitions
80
+
81
+ create_fixed_definition( 'value' => (0..7), 'date' => (8..15), :ccy => (16..18) )
82
+
83
+ create_field_attr_accessors
84
+ end
85
+
86
+ assert AFixed.respond_to?('fixed_definition')
87
+ assert AFixed.respond_to?('field_definition')
88
+ assert AFixed.respond_to?('add_field')
89
+ assert AFixed.respond_to?('file_set_field_by_map')
90
+ assert AFixed.respond_to?('split_on')
91
+ assert AFixed.respond_to?('split_on_write')
92
+
93
+ x = AFixed.new('0123456719990113EUR')
94
+
95
+ assert x.respond_to?('value')
96
+ assert x.respond_to?(:date)
97
+ assert x.respond_to?('ccy')
98
+
99
+ assert AFixed.field_definition.include?('ccy')
100
+
101
+ assert_equal 3, AFixed.field_definition.size
102
+ assert_equal 3, AFixed.fixed_definition.keys.size
103
+
104
+ assert_equal ["ccy", "date", "value"], AFixed.field_definition.sort
105
+
106
+ assert_equal AFixed.field_definition.sort, AFixed.fixed_definition.keys.sort
107
+
108
+ assert_instance_of Range, AFixed.fixed_definition.values[0]
109
+
110
+ assert_equal x.current_line, '0123456719990113EUR'
111
+ assert_equal x.value, '01234567'
112
+ assert_equal x.date, '19990113'
113
+ assert_equal x.ccy, 'EUR'
114
+
115
+ assert x.respond_to?(:parse)
116
+
117
+ x.parse('9876543220100630USD')
118
+
119
+ assert_equal x.current_line, '9876543220100630USD'
120
+ assert_equal x.value, '98765432'
121
+ assert_equal x.date, '20100630'
122
+ assert_equal x.ccy, 'USD'
123
+
124
+ end
125
+
126
+ def test_bad_setup
127
+ klass = Object.const_set('ABadClass', Class.new)
128
+ begin
129
+ klass.module_eval do
130
+ include FileDefinitions
131
+
132
+ create_fixed_definition( 'abc' )
133
+
134
+ create_field_attr_accessors
135
+ end
136
+ flunk # We should never get here
137
+ rescue => e
138
+ assert e
139
+ end
140
+ end
141
+ end
@@ -1,29 +1,29 @@
1
- ## YAML Template.
2
-
3
- # Format is :
4
- # --- !ruby/object:ActiveRecordModel
5
- # :datashift_defaults
6
- # :key value
7
- #
8
-
9
- Project:
10
- datashift_defaults:
11
- value_as_string: "Default Project Value"
12
- category: reference:category_002
13
-
14
- datashift_overrides:
15
- value_as_double: 99.23546
16
-
17
- --- !ruby/object:Project
18
- attributes:
19
- id:
20
- title:
21
- value_as_string: ""
22
- value_as_text: "object has value text"
23
- value_as_boolean:
24
- value_as_datetime:
25
- value_as_integer: 23
26
- value_as_double: 45.82
27
- created_at:
28
- updated_at:
29
-
1
+ ## YAML Template.
2
+
3
+ # Format is :
4
+ # --- !ruby/object:ActiveRecordModel
5
+ # :datashift_defaults
6
+ # :key value
7
+ #
8
+
9
+ Project:
10
+ datashift_defaults:
11
+ value_as_string: "Default Project Value"
12
+ category: reference:category_002
13
+
14
+ datashift_overrides:
15
+ value_as_double: 99.23546
16
+
17
+ --- !ruby/object:Project
18
+ attributes:
19
+ id:
20
+ title:
21
+ value_as_string: ""
22
+ value_as_text: "object has value text"
23
+ value_as_boolean:
24
+ value_as_datetime:
25
+ value_as_integer: 23
26
+ value_as_double: 45.82
27
+ created_at:
28
+ updated_at:
29
+
@@ -1,28 +1,28 @@
1
- # Used by spec helper to build test databases
2
- # These entires can be used in call to db_connect ( see spec_helper )
3
-
4
- <% adapter = 'sqlite3' %>
5
- <% adapter = 'jdbcsqlite3' if(Guards::jruby? ) %>
6
-
7
- test_mysql:
8
- adapter: jdbcmysql
9
- database: datashift_test_models_db
10
- username: test
11
- password: test
12
- host: localhost
13
-
14
- test_memory:
15
- adapter: <%= adapter %>
16
- database: :memory
17
-
18
- test_file:
19
- adapter: <%= adapter %>
20
- database: <%= File.join($DataShiftFixturePath, 'datashift_test_models_db.sqlite') %>
21
- encoding: utf8
22
- host: localhost
23
-
24
- test_spree_standalone:
25
- adapter: <%= adapter %>
26
- database: <%= File.join($DataShiftFixturePath, 'datashift_Spree_db.sqlite') %>
27
- encoding: utf8
1
+ # Used by spec helper to build test databases
2
+ # These entires can be used in call to db_connect ( see spec_helper )
3
+
4
+ <% adapter = 'sqlite3' %>
5
+ <% adapter = 'jdbcsqlite3' if(Guards::jruby? ) %>
6
+
7
+ test_mysql:
8
+ adapter: jdbcmysql
9
+ database: datashift_test_models_db
10
+ username: test
11
+ password: test
12
+ host: localhost
13
+
14
+ test_memory:
15
+ adapter: <%= adapter %>
16
+ database: :memory
17
+
18
+ test_file:
19
+ adapter: <%= adapter %>
20
+ database: <%= File.join($DataShiftFixturePath, 'datashift_test_models_db.sqlite') %>
21
+ encoding: utf8
22
+ host: localhost
23
+
24
+ test_spree_standalone:
25
+ adapter: <%= adapter %>
26
+ database: <%= File.join($DataShiftFixturePath, 'datashift_Spree_db.sqlite') %>
27
+ encoding: utf8
28
28
  host: localhost
@@ -1,4 +1,4 @@
1
- "Name","Description","Available On"," Price","CostPrice","product_properties","count_on_hand","Taxons","Option Types"
2
- "Demo Product for AR Loader","blah blah","2011-02-14",400.00,320.00,"name:test_pp_001",12,"Paintings","mime_type:jpeg, PDF,PNG"
3
- "Demo Excel Load via Jruby","less blah","2011-05-14",100.00,30.00,"name:test_pp_001",5,"Paintings","mime_type:jpeg, PDF,PNG"
4
- "Demo third row in future","more blah blah","2012-07-01",50.34,23.34,"name:test_pp_002,test_pp_003",23,"Drawings","mime_type:jpeg,PDF,PNG|print_type:black_white,colour"
1
+ "Name","Description","Available On"," Price","CostPrice","product_properties","count_on_hand","Taxons","Option Types"
2
+ "Demo Product for AR Loader","blah blah","2011-02-14",400.00,320.00,"name:test_pp_001",12,"Paintings","mime_type:jpeg, PDF,PNG"
3
+ "Demo Excel Load via Jruby","less blah","2011-05-14",100.00,30.00,"name:test_pp_001",5,"Paintings","mime_type:jpeg, PDF,PNG"
4
+ "Demo third row in future","more blah blah","2012-07-01",50.34,23.34,"name:test_pp_002,test_pp_003",23,"Drawings","mime_type:jpeg,PDF,PNG|print_type:black_white,colour"
@@ -1,4 +1,4 @@
1
- "SKU","Description","Available On","CostPrice","product_properties","count_on_hand","Taxons","Option Types"
2
- "DEMO_001","blah blah","2011-02-14",320.00,"name:test_pp_001",12,"Paintings","mime_type:jpeg, PDF,PNG"
3
- "DEMO_002","less blah","2011-05-14",30.00,"name:test_pp_001",5,"Paintings","mime_type:jpeg, PDF,PNG"
4
- "DEMO_003","more blah blah","2012-07-01",23.34,"name:test_pp_002,test_pp_003",23,"Drawings","mime_type:jpeg,PDF,PNG|print_type:black_white,colour"
1
+ "SKU","Description","Available On","CostPrice","product_properties","count_on_hand","Taxons","Option Types"
2
+ "DEMO_001","blah blah","2011-02-14",320.00,"name:test_pp_001",12,"Paintings","mime_type:jpeg, PDF,PNG"
3
+ "DEMO_002","less blah","2011-05-14",30.00,"name:test_pp_001",5,"Paintings","mime_type:jpeg, PDF,PNG"
4
+ "DEMO_003","more blah blah","2012-07-01",23.34,"name:test_pp_002,test_pp_003",23,"Drawings","mime_type:jpeg,PDF,PNG|print_type:black_white,colour"
@@ -1,4 +1,4 @@
1
- "SKU","Name","Description","Available On"," Price","CostPrice","product_properties","Taxons","Variants","count_on_hand"
2
- "DEMO_001","Demo Product for AR Loader","blah blah","2011-02-14",399.99,320.00,"test_pp_001","Paintings|WaterColour","mime_type:jpeg,PDF,PNG","12|6|7"
3
- "DEMO_002","Demo Excel Load via Jruby","less blah","2011-05-14",100.00,30.00,"test_pp_003","Paintings|Landscape|Oils","mime_type:jpeg, PDF,PNG","5|4|2"
4
- "DEMO_003","Demo third row in future","more blah blah","2012-07-01",50.34,23.34,"test_pp_002|test_pp_003:Example free value|yet_another_property","Drawings","mime_type:jpeg,PDF,PNG|print_type:black_white,colour","12|4|7|12|18"
1
+ "SKU","Name","Description","Available On"," Price","CostPrice","product_properties","Taxons","OptionTypes","Variants","count_on_hand"
2
+ "DEMO_001","Demo Product for AR Loader","blah blah","2011-02-14",399.99,320.00,"test_pp_001","Paintings|WaterColour",,"mime_type:jpeg,PDF,PNG","12|6|7"
3
+ "DEMO_002","Demo Excel Load via Jruby","less blah","2011-05-14",100.00,30.00,"test_pp_003","Paintings|Oils|Paintings>Nature>Seascape","mime_type:jpeg, PDF,PNG",,"5|4|2"
4
+ "DEMO_003","Demo third row in future","more blah blah","2012-07-01",50.34,23.34,"test_pp_002|test_pp_003:Example free value|yet_another_property","Drawings|Landscape",,"mime_type:jpeg,PDF,PNG|print_type:black_white,colour","12|4|7|12|18"
Binary file
@@ -1,4 +1,4 @@
1
- "SKU","Name","Description","Available On"," Price","CostPrice","product_properties","product_properties","product_properties","Taxons","Taxons","Taxons","Option Types","Option Types","Variants","Variants","Variants","count_on_hand"
2
- "DEMO_001","Demo Product for AR Loader","blah blah","2011-02-14",399.99,320.00,"test_pp_001",,,"Paintings","WaterColour",,"mime_type:jpeg","mime_type:PDF","mime_type:PNG",,,"12|6|7"
3
- "DEMO_002","Demo Excel Load via Jruby","less blah","2011-05-14",100.00,30.00,"test_pp_003",,,"Paintings","Landscape","Oils","mime_type:jpeg","mime_type:PDF","mime_type:PNG",,,"5|4|2"
4
- "DEMO_003","Demo third row in future","more blah blah","2012-07-01",50.34,23.34,"test_pp_002","test_pp_003:Example free value","yet_another_property","Drawings",,,"mime_type:jpeg","mime_type:PDF","mime_type:PNG","print_type:black_white","print_type:colour","12|4|7|12|18"
1
+ "SKU","Name","Description","Available On"," Price","CostPrice","product_properties","product_properties","product_properties","Taxons","Taxons","Taxons","Option Types","Option Types","Variants","Variants","Variants","count_on_hand"
2
+ "DEMO_001","Demo Product for AR Loader","blah blah","2011-02-14",399.99,320.00,"test_pp_001",,,"Paintings","WaterColour",,"mime_type:jpeg","mime_type:PDF","mime_type:PNG",,,"12|6|7"
3
+ "DEMO_002","Demo Excel Load via Jruby","less blah","2011-05-14",100.00,30.00,"test_pp_003",,,"Paintings","Oils","Paintings>Nature>Seascape","mime_type:jpeg","mime_type:PDF","mime_type:PNG",,,"5|4|2"
4
+ "DEMO_003","Demo third row in future","more blah blah","2012-07-01",50.34,23.34,"test_pp_002","test_pp_003:Example free value","yet_another_property","Drawings","Landscape",,"mime_type:jpeg","mime_type:PDF","mime_type:PNG","print_type:black_white","print_type:colour","12|4|7|12|18"
@@ -1,4 +1,4 @@
1
- "SKU","Name","Description","Available On"," Price","CostPrice","count_on_hand","Option Types"
2
- "SIMPLE_001","Simple Product for AR Loader","blah blah","2011-02-14",345.78,320.00,12,"mime_type"
3
- "SIMPLE_002","Simple Excel Load via Jruby","less blah","2011-05-14",100.00,30.00,5,"mime_type"
4
- "SIMPLE_003","Simple third row avail in future","more blah blah","2012-07-01",50.34,23.34,23,"mime_type|print_type"
1
+ "SKU","Name","Description","Available On"," Price","CostPrice","count_on_hand","Option Types"
2
+ "SIMPLE_001","Simple Product for AR Loader","blah blah","2011-02-14",345.78,320.00,12,"mime_type"
3
+ "SIMPLE_002","Simple Excel Load via Jruby","less blah","2011-05-14",100.00,30.00,5,"mime_type"
4
+ "SIMPLE_003","Simple third row avail in future","more blah blah","2012-07-01",50.34,23.34,23,"mime_type|print_type"