comma 3.1.1 → 3.2.0

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.
Files changed (34) hide show
  1. data/Appraisals +6 -1
  2. data/Gemfile.lock +1 -1
  3. data/README.markdown +42 -2
  4. data/gemfiles/{active3.2.11.gemfile → active3.0.20.gemfile} +2 -2
  5. data/gemfiles/{active3.0.9.gemfile.lock → active3.0.20.gemfile.lock} +17 -17
  6. data/gemfiles/active3.1.12.gemfile.lock +1 -1
  7. data/gemfiles/{active3.0.9.gemfile → active3.2.14.gemfile} +2 -2
  8. data/gemfiles/{active3.2.11.gemfile.lock → active3.2.14.gemfile.lock} +14 -14
  9. data/gemfiles/active4.0.0.gemfile.lock +1 -1
  10. data/gemfiles/{rails3.0.9.gemfile → data_mapper1.2.0.gemfile} +2 -2
  11. data/gemfiles/data_mapper1.2.0.gemfile.lock +101 -0
  12. data/gemfiles/mongoid3.1.4.gemfile.lock +2 -2
  13. data/gemfiles/{rails3.1.1.gemfile → rails3.0.20.gemfile} +1 -1
  14. data/gemfiles/{rails3.0.9.gemfile.lock → rails3.0.20.gemfile.lock} +41 -41
  15. data/gemfiles/rails3.1.12.gemfile.lock +1 -1
  16. data/gemfiles/{rails3.2.11.gemfile → rails3.2.14.gemfile} +1 -1
  17. data/gemfiles/{rails3.2.11.gemfile.lock → rails3.2.14.gemfile.lock} +42 -43
  18. data/gemfiles/rails4.0.0.gemfile.lock +1 -1
  19. data/lib/comma.rb +3 -1
  20. data/lib/comma/data_extractor.rb +78 -0
  21. data/lib/comma/data_mapper_collection.rb +7 -0
  22. data/lib/comma/extractor.rb +36 -0
  23. data/lib/comma/header_extractor.rb +48 -0
  24. data/lib/comma/object.rb +4 -0
  25. data/lib/comma/version.rb +1 -1
  26. data/spec/comma/{extractors_spec.rb → data_extractor_spec.rb} +2 -60
  27. data/spec/comma/header_extractor_spec.rb +68 -0
  28. data/spec/comma/rails/data_mapper_collection_spec.rb +49 -0
  29. metadata +138 -102
  30. checksums.yaml +0 -15
  31. data/gemfiles/active3.1.1.gemfile +0 -9
  32. data/gemfiles/active3.1.1.gemfile.lock +0 -58
  33. data/gemfiles/rails3.1.1.gemfile.lock +0 -124
  34. data/lib/comma/extractors.rb +0 -131
data/Appraisals CHANGED
@@ -1,4 +1,4 @@
1
- ['3.0.9', '3.1.1', '3.1.12', '3.2.11', '4.0.0'].each do |version_number|
1
+ ['3.0.20', '3.1.12', '3.2.14', '4.0.0'].each do |version_number|
2
2
  clean_number = version_number.gsub(/[<>~=]*/, '')
3
3
  next if RUBY_VERSION < '1.9.3' && version_number >= '4.0.0'
4
4
 
@@ -18,3 +18,8 @@ if RUBY_VERSION >= '1.9.3'
18
18
  gem 'mongoid', '3.1.4'
19
19
  end
20
20
  end
21
+
22
+ appraise 'data_mapper1.2.0' do
23
+ gem 'data_mapper', '1.2.0'
24
+ gem 'dm-sqlite-adapter', '1.2.0'
25
+ end
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- comma (3.1.1)
4
+ comma (3.2.0)
5
5
  activesupport (>= 3.0.0)
6
6
 
7
7
  GEM
data/README.markdown CHANGED
@@ -10,7 +10,7 @@ The mainline of this project builds gems to the 3.x version series, and is compa
10
10
  * Ruby 1.8.7, 1.9.2, 1.9.3, 2.0.0
11
11
  * REE 1.8.7
12
12
  * RBX 1.8 mode, 1.9 mode
13
- * Rails 3.x (all versions, with ActiveRecord and Mongoid support)
13
+ * Rails 3.x (all versions, with ActiveRecord, DataMapper and Mongoid support)
14
14
 
15
15
  [![Build Status](https://travis-ci.org/comma-csv/comma.png?branch=master)](https://travis-ci.org/comma-csv/comma) [![Code Climate](https://codeclimate.com/github/comma-csv/comma.png)](https://codeclimate.com/github/comma-csv/comma)
16
16
 
@@ -227,6 +227,47 @@ In the preceding example, the 2 new fields added (both based on the publisher re
227
227
  * the first example 'publishers_contact' is loaded straight as a block. The value returned by the lambda is displayed with a header value of 'Publisher'
228
228
  * the second example 'total_publishers_users' is sent via a hash and a custom label is set, if used in the first examples method the header would be 'Publisher', but sent as a hash the header is 'Number of publisher users'.
229
229
 
230
+ ##Using special fields
231
+
232
+ ###\_\_use\_\_
233
+
234
+ With `__use__` field, you can reuse output formats that are defined in
235
+ the same class. In the example below, default format (`:default`)
236
+ includes `:minimum` format when `#to_comma` is called.
237
+
238
+ ```ruby
239
+ class Book < ActiveRecord::Base
240
+ comma do
241
+ __use__ :minimum
242
+
243
+ description
244
+
245
+ isbn :number_10 => 'ISBN-10', :number_13 => 'ISBN-13'
246
+ end
247
+
248
+ comma :minimum do
249
+ name
250
+ end
251
+ end
252
+ ```
253
+
254
+ ###\_\_static_column\_\_
255
+
256
+ When you want to have static value in your CSV output, you can use
257
+ `__static__` field. You can provide values to output to blocks.
258
+ Without block, field will become empty.
259
+
260
+ ```ruby
261
+ class Book < ActiveRecord::Base
262
+ comma do
263
+ __static_column__ 'Check' do ' ' end
264
+ name
265
+ __static_column__ 'Spacer'
266
+ description
267
+ end
268
+ end
269
+ ```
270
+
230
271
  ##USING WITH RAILS
231
272
 
232
273
  When used with Rails (ie. add 'comma' as a gem dependency), Comma automatically adds support for rendering CSV output in your controllers:
@@ -323,4 +364,3 @@ When rebuilding for a new rails version, to test across controller and the stack
323
364
  ```
324
365
  rails plugin new rails_app --full --dummy-path=spec/dummy --skip-bundle --skip-gemspec --skip-test-unit --skip-sprockets --skip-javascript --skip-gemfile --skip-git
325
366
  ```
326
-
@@ -3,7 +3,7 @@
3
3
  source "http://rubygems.org"
4
4
 
5
5
  gem "fastercsv", :platforms=>:ruby_18
6
- gem "activesupport", "3.2.11"
7
- gem "activerecord", "3.2.11"
6
+ gem "activesupport", "3.0.20"
7
+ gem "activerecord", "3.0.20"
8
8
 
9
9
  gemspec :path=>"../"
@@ -1,32 +1,32 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- comma (3.1.0)
4
+ comma (3.2.0)
5
5
  activesupport (>= 3.0.0)
6
6
 
7
7
  GEM
8
8
  remote: http://rubygems.org/
9
9
  specs:
10
- activemodel (3.0.9)
11
- activesupport (= 3.0.9)
10
+ activemodel (3.0.20)
11
+ activesupport (= 3.0.20)
12
12
  builder (~> 2.1.2)
13
13
  i18n (~> 0.5.0)
14
- activerecord (3.0.9)
15
- activemodel (= 3.0.9)
16
- activesupport (= 3.0.9)
14
+ activerecord (3.0.20)
15
+ activemodel (= 3.0.20)
16
+ activesupport (= 3.0.20)
17
17
  arel (~> 2.0.10)
18
18
  tzinfo (~> 0.3.23)
19
- activesupport (3.0.9)
19
+ activesupport (3.0.20)
20
20
  appraisal (0.4.1)
21
21
  bundler
22
22
  rake
23
23
  arel (2.0.10)
24
24
  builder (2.1.2)
25
25
  diff-lcs (1.1.3)
26
- fastercsv (1.5.4)
26
+ fastercsv (1.5.5)
27
27
  i18n (0.5.0)
28
- multi_json (1.1.0)
29
- rake (0.9.2.2)
28
+ multi_json (1.7.9)
29
+ rake (0.9.6)
30
30
  rspec (2.8.0)
31
31
  rspec-core (~> 2.8.0)
32
32
  rspec-expectations (~> 2.8.0)
@@ -35,19 +35,19 @@ GEM
35
35
  rspec-expectations (2.8.0)
36
36
  diff-lcs (~> 1.1.2)
37
37
  rspec-mocks (2.8.0)
38
- simplecov (0.6.1)
38
+ simplecov (0.7.1)
39
39
  multi_json (~> 1.0)
40
- simplecov-html (~> 0.5.3)
41
- simplecov-html (0.5.3)
42
- sqlite3 (1.3.5)
43
- tzinfo (0.3.31)
40
+ simplecov-html (~> 0.7.1)
41
+ simplecov-html (0.7.1)
42
+ sqlite3 (1.3.8)
43
+ tzinfo (0.3.37)
44
44
 
45
45
  PLATFORMS
46
46
  ruby
47
47
 
48
48
  DEPENDENCIES
49
- activerecord (= 3.0.9)
50
- activesupport (= 3.0.9)
49
+ activerecord (= 3.0.20)
50
+ activesupport (= 3.0.20)
51
51
  appraisal (~> 0.4.1)
52
52
  comma!
53
53
  fastercsv
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- comma (3.1.0)
4
+ comma (3.2.0)
5
5
  activesupport (>= 3.0.0)
6
6
 
7
7
  GEM
@@ -3,7 +3,7 @@
3
3
  source "http://rubygems.org"
4
4
 
5
5
  gem "fastercsv", :platforms=>:ruby_18
6
- gem "activesupport", "3.0.9"
7
- gem "activerecord", "3.0.9"
6
+ gem "activesupport", "3.2.14"
7
+ gem "activerecord", "3.2.14"
8
8
 
9
9
  gemspec :path=>"../"
@@ -1,22 +1,22 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- comma (3.1.0)
4
+ comma (3.2.0)
5
5
  activesupport (>= 3.0.0)
6
6
 
7
7
  GEM
8
8
  remote: http://rubygems.org/
9
9
  specs:
10
- activemodel (3.2.11)
11
- activesupport (= 3.2.11)
10
+ activemodel (3.2.14)
11
+ activesupport (= 3.2.14)
12
12
  builder (~> 3.0.0)
13
- activerecord (3.2.11)
14
- activemodel (= 3.2.11)
15
- activesupport (= 3.2.11)
13
+ activerecord (3.2.14)
14
+ activemodel (= 3.2.14)
15
+ activesupport (= 3.2.14)
16
16
  arel (~> 3.0.2)
17
17
  tzinfo (~> 0.3.29)
18
- activesupport (3.2.11)
19
- i18n (~> 0.6)
18
+ activesupport (3.2.14)
19
+ i18n (~> 0.6, >= 0.6.4)
20
20
  multi_json (~> 1.0)
21
21
  appraisal (0.4.1)
22
22
  bundler
@@ -25,8 +25,8 @@ GEM
25
25
  builder (3.0.4)
26
26
  diff-lcs (1.1.3)
27
27
  fastercsv (1.5.5)
28
- i18n (0.6.1)
29
- multi_json (1.5.0)
28
+ i18n (0.6.5)
29
+ multi_json (1.7.9)
30
30
  rake (0.9.6)
31
31
  rspec (2.8.0)
32
32
  rspec-core (~> 2.8.0)
@@ -40,15 +40,15 @@ GEM
40
40
  multi_json (~> 1.0)
41
41
  simplecov-html (~> 0.7.1)
42
42
  simplecov-html (0.7.1)
43
- sqlite3 (1.3.7)
44
- tzinfo (0.3.35)
43
+ sqlite3 (1.3.8)
44
+ tzinfo (0.3.37)
45
45
 
46
46
  PLATFORMS
47
47
  ruby
48
48
 
49
49
  DEPENDENCIES
50
- activerecord (= 3.2.11)
51
- activesupport (= 3.2.11)
50
+ activerecord (= 3.2.14)
51
+ activesupport (= 3.2.14)
52
52
  appraisal (~> 0.4.1)
53
53
  comma!
54
54
  fastercsv
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- comma (3.1.0)
4
+ comma (3.1.1)
5
5
  activesupport (>= 3.0.0)
6
6
 
7
7
  GEM
@@ -3,7 +3,7 @@
3
3
  source "http://rubygems.org"
4
4
 
5
5
  gem "fastercsv", :platforms=>:ruby_18
6
- gem "rails", "3.0.9"
7
- gem "rspec-rails"
6
+ gem "data_mapper", "1.2.0"
7
+ gem "dm-sqlite-adapter", "1.2.0"
8
8
 
9
9
  gemspec :path=>"../"
@@ -0,0 +1,101 @@
1
+ PATH
2
+ remote: ..
3
+ specs:
4
+ comma (3.2.0)
5
+ activesupport (>= 3.0.0)
6
+
7
+ GEM
8
+ remote: http://rubygems.org/
9
+ specs:
10
+ activesupport (3.2.14)
11
+ i18n (~> 0.6, >= 0.6.4)
12
+ multi_json (~> 1.0)
13
+ addressable (2.3.5)
14
+ appraisal (0.4.1)
15
+ bundler
16
+ rake
17
+ bcrypt-ruby (3.1.2)
18
+ data_mapper (1.2.0)
19
+ dm-aggregates (~> 1.2.0)
20
+ dm-constraints (~> 1.2.0)
21
+ dm-core (~> 1.2.0)
22
+ dm-migrations (~> 1.2.0)
23
+ dm-serializer (~> 1.2.0)
24
+ dm-timestamps (~> 1.2.0)
25
+ dm-transactions (~> 1.2.0)
26
+ dm-types (~> 1.2.0)
27
+ dm-validations (~> 1.2.0)
28
+ data_objects (0.10.13)
29
+ addressable (~> 2.1)
30
+ diff-lcs (1.1.3)
31
+ dm-aggregates (1.2.0)
32
+ dm-core (~> 1.2.0)
33
+ dm-constraints (1.2.0)
34
+ dm-core (~> 1.2.0)
35
+ dm-core (1.2.1)
36
+ addressable (~> 2.3)
37
+ dm-do-adapter (1.2.0)
38
+ data_objects (~> 0.10.6)
39
+ dm-core (~> 1.2.0)
40
+ dm-migrations (1.2.0)
41
+ dm-core (~> 1.2.0)
42
+ dm-serializer (1.2.2)
43
+ dm-core (~> 1.2.0)
44
+ fastercsv (~> 1.5)
45
+ json (~> 1.6)
46
+ json_pure (~> 1.6)
47
+ multi_json (~> 1.0)
48
+ dm-sqlite-adapter (1.2.0)
49
+ dm-do-adapter (~> 1.2.0)
50
+ do_sqlite3 (~> 0.10.6)
51
+ dm-timestamps (1.2.0)
52
+ dm-core (~> 1.2.0)
53
+ dm-transactions (1.2.0)
54
+ dm-core (~> 1.2.0)
55
+ dm-types (1.2.2)
56
+ bcrypt-ruby (~> 3.0)
57
+ dm-core (~> 1.2.0)
58
+ fastercsv (~> 1.5)
59
+ json (~> 1.6)
60
+ multi_json (~> 1.0)
61
+ stringex (~> 1.4)
62
+ uuidtools (~> 2.1)
63
+ dm-validations (1.2.0)
64
+ dm-core (~> 1.2.0)
65
+ do_sqlite3 (0.10.13)
66
+ data_objects (= 0.10.13)
67
+ fastercsv (1.5.5)
68
+ i18n (0.6.5)
69
+ json (1.8.0)
70
+ json_pure (1.8.0)
71
+ multi_json (1.7.9)
72
+ rake (0.9.6)
73
+ rspec (2.8.0)
74
+ rspec-core (~> 2.8.0)
75
+ rspec-expectations (~> 2.8.0)
76
+ rspec-mocks (~> 2.8.0)
77
+ rspec-core (2.8.0)
78
+ rspec-expectations (2.8.0)
79
+ diff-lcs (~> 1.1.2)
80
+ rspec-mocks (2.8.0)
81
+ simplecov (0.7.1)
82
+ multi_json (~> 1.0)
83
+ simplecov-html (~> 0.7.1)
84
+ simplecov-html (0.7.1)
85
+ sqlite3 (1.3.8)
86
+ stringex (1.5.1)
87
+ uuidtools (2.1.4)
88
+
89
+ PLATFORMS
90
+ ruby
91
+
92
+ DEPENDENCIES
93
+ appraisal (~> 0.4.1)
94
+ comma!
95
+ data_mapper (= 1.2.0)
96
+ dm-sqlite-adapter (= 1.2.0)
97
+ fastercsv
98
+ rake (~> 0.9.2)
99
+ rspec (~> 2.8.0)
100
+ simplecov
101
+ sqlite3 (~> 1.3.4)
@@ -1,7 +1,7 @@
1
1
  PATH
2
- remote: /Users/tom/src/personal/comma
2
+ remote: ..
3
3
  specs:
4
- comma (3.1.0)
4
+ comma (3.1.1)
5
5
  activesupport (>= 3.0.0)
6
6
 
7
7
  GEM
@@ -3,7 +3,7 @@
3
3
  source "http://rubygems.org"
4
4
 
5
5
  gem "fastercsv", :platforms=>:ruby_18
6
- gem "rails", "3.1.1"
6
+ gem "rails", "3.0.20"
7
7
  gem "rspec-rails"
8
8
 
9
9
  gemspec :path=>"../"
@@ -1,39 +1,39 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- comma (3.1.0)
4
+ comma (3.2.0)
5
5
  activesupport (>= 3.0.0)
6
6
 
7
7
  GEM
8
8
  remote: http://rubygems.org/
9
9
  specs:
10
10
  abstract (1.0.0)
11
- actionmailer (3.0.9)
12
- actionpack (= 3.0.9)
11
+ actionmailer (3.0.20)
12
+ actionpack (= 3.0.20)
13
13
  mail (~> 2.2.19)
14
- actionpack (3.0.9)
15
- activemodel (= 3.0.9)
16
- activesupport (= 3.0.9)
14
+ actionpack (3.0.20)
15
+ activemodel (= 3.0.20)
16
+ activesupport (= 3.0.20)
17
17
  builder (~> 2.1.2)
18
18
  erubis (~> 2.6.6)
19
19
  i18n (~> 0.5.0)
20
- rack (~> 1.2.1)
20
+ rack (~> 1.2.5)
21
21
  rack-mount (~> 0.6.14)
22
22
  rack-test (~> 0.5.7)
23
23
  tzinfo (~> 0.3.23)
24
- activemodel (3.0.9)
25
- activesupport (= 3.0.9)
24
+ activemodel (3.0.20)
25
+ activesupport (= 3.0.20)
26
26
  builder (~> 2.1.2)
27
27
  i18n (~> 0.5.0)
28
- activerecord (3.0.9)
29
- activemodel (= 3.0.9)
30
- activesupport (= 3.0.9)
28
+ activerecord (3.0.20)
29
+ activemodel (= 3.0.20)
30
+ activesupport (= 3.0.20)
31
31
  arel (~> 2.0.10)
32
32
  tzinfo (~> 0.3.23)
33
- activeresource (3.0.9)
34
- activemodel (= 3.0.9)
35
- activesupport (= 3.0.9)
36
- activesupport (3.0.9)
33
+ activeresource (3.0.20)
34
+ activemodel (= 3.0.20)
35
+ activesupport (= 3.0.20)
36
+ activesupport (3.0.20)
37
37
  appraisal (0.4.1)
38
38
  bundler
39
39
  rake
@@ -42,38 +42,38 @@ GEM
42
42
  diff-lcs (1.1.3)
43
43
  erubis (2.6.6)
44
44
  abstract (>= 1.0.0)
45
- fastercsv (1.5.4)
45
+ fastercsv (1.5.5)
46
46
  i18n (0.5.0)
47
- json (1.6.5)
48
- mail (2.2.19)
47
+ json (1.8.0)
48
+ mail (2.2.20)
49
49
  activesupport (>= 2.3.6)
50
50
  i18n (>= 0.4.0)
51
51
  mime-types (~> 1.16)
52
52
  treetop (~> 1.4.8)
53
- mime-types (1.17.2)
54
- multi_json (1.1.0)
53
+ mime-types (1.25)
54
+ multi_json (1.7.9)
55
55
  polyglot (0.3.3)
56
- rack (1.2.5)
56
+ rack (1.2.8)
57
57
  rack-mount (0.6.14)
58
58
  rack (>= 1.0.0)
59
59
  rack-test (0.5.7)
60
60
  rack (>= 1.0)
61
- rails (3.0.9)
62
- actionmailer (= 3.0.9)
63
- actionpack (= 3.0.9)
64
- activerecord (= 3.0.9)
65
- activeresource (= 3.0.9)
66
- activesupport (= 3.0.9)
61
+ rails (3.0.20)
62
+ actionmailer (= 3.0.20)
63
+ actionpack (= 3.0.20)
64
+ activerecord (= 3.0.20)
65
+ activeresource (= 3.0.20)
66
+ activesupport (= 3.0.20)
67
67
  bundler (~> 1.0)
68
- railties (= 3.0.9)
69
- railties (3.0.9)
70
- actionpack (= 3.0.9)
71
- activesupport (= 3.0.9)
68
+ railties (= 3.0.20)
69
+ railties (3.0.20)
70
+ actionpack (= 3.0.20)
71
+ activesupport (= 3.0.20)
72
72
  rake (>= 0.8.7)
73
73
  rdoc (~> 3.4)
74
74
  thor (~> 0.14.4)
75
- rake (0.9.2.2)
76
- rdoc (3.12)
75
+ rake (0.9.6)
76
+ rdoc (3.12.2)
77
77
  json (~> 1.4)
78
78
  rspec (2.8.0)
79
79
  rspec-core (~> 2.8.0)
@@ -88,16 +88,16 @@ GEM
88
88
  activesupport (>= 3.0)
89
89
  railties (>= 3.0)
90
90
  rspec (~> 2.8.0)
91
- simplecov (0.6.1)
91
+ simplecov (0.7.1)
92
92
  multi_json (~> 1.0)
93
- simplecov-html (~> 0.5.3)
94
- simplecov-html (0.5.3)
95
- sqlite3 (1.3.5)
93
+ simplecov-html (~> 0.7.1)
94
+ simplecov-html (0.7.1)
95
+ sqlite3 (1.3.8)
96
96
  thor (0.14.6)
97
- treetop (1.4.10)
97
+ treetop (1.4.15)
98
98
  polyglot
99
99
  polyglot (>= 0.3.1)
100
- tzinfo (0.3.31)
100
+ tzinfo (0.3.37)
101
101
 
102
102
  PLATFORMS
103
103
  ruby
@@ -106,7 +106,7 @@ DEPENDENCIES
106
106
  appraisal (~> 0.4.1)
107
107
  comma!
108
108
  fastercsv
109
- rails (= 3.0.9)
109
+ rails (= 3.0.20)
110
110
  rake (~> 0.9.2)
111
111
  rspec (~> 2.8.0)
112
112
  rspec-rails