cbuilder 0.0.1 → 0.0.2
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 +7 -0
- data/.travis.yml +6 -0
- data/README.md +4 -2
- data/Rakefile +2 -0
- data/cbuilder.gemspec +3 -2
- data/lib/cbuilder.rb +18 -17
- metadata +24 -13
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 97eba12f5cd2f1fdae6a622bf48420a447512c1f
|
4
|
+
data.tar.gz: e7374f630008e1c1455d5b72a0b7c3b97c43eee8
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 9b6dc8ae4fe9a50d4ed0a093a65ffbf44c95249f30585f0d79095101c925488c0cfb6c5f4d32d48941879e84d7fb9ad9ea70c00f8c95ca4bc2faf0ea5f8f6f73
|
7
|
+
data.tar.gz: acad4c25d5a3e701330cff706a95e95729cbc02917b2fa83e23ac04c616a1f2c2bc223271e90099537a153af27dbc16d890b9efc902c945b90eb5457e2a62fba
|
data/.travis.yml
ADDED
data/README.md
CHANGED
@@ -1,10 +1,12 @@
|
|
1
1
|
# cbuilder
|
2
2
|
|
3
|
+
[](https://travis-ci.org/caffeinatedlabs/cbuilder)
|
4
|
+
|
3
5
|
Cbuilder is an ultralight (< 100 LOC) CSV builder/template handler inspired by dhh's excellent
|
4
6
|
Jbuilder. The goal is a simple DSL for creating CSV files that's better than creating
|
5
7
|
massive custom arrays.
|
6
8
|
|
7
|
-
If you're doing any more than 4-5 columns, generating CSV files can be a real pain.
|
9
|
+
If you're doing any more than 4-5 columns, generating CSV files can be a real pain.
|
8
10
|
God forbid you're not simply outputting the attributes of a simple array, and need
|
9
11
|
helpers or other niceties.
|
10
12
|
|
@@ -13,7 +15,7 @@ You don't need to re-invent the wheel with CSV. Cbuilder weighs in at less than
|
|
13
15
|
Have you ever found yourself doing this?
|
14
16
|
|
15
17
|
```ruby
|
16
|
-
Customer Name,Products Purchased, Product Names
|
18
|
+
Customer Name,Products Purchased, Product Names
|
17
19
|
<% @orders.each do |order|%>
|
18
20
|
<%= order.customer.name %>,<%= products_count(order) %>,<%= product_names(order.products) %>,...
|
19
21
|
<% end %>
|
data/Rakefile
CHANGED
data/cbuilder.gemspec
CHANGED
@@ -2,14 +2,15 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |gem|
|
4
4
|
gem.name = "cbuilder"
|
5
|
-
gem.version = "0.0.
|
5
|
+
gem.version = "0.0.2"
|
6
6
|
gem.authors = ["Nate Berkopec"]
|
7
7
|
gem.email = ["nate.berkopec@gmail.com"]
|
8
8
|
gem.summary = "Create CSV structures with a Builder-style DSL"
|
9
9
|
gem.homepage = "http://github.com/nateberkopec/cbuilder"
|
10
10
|
|
11
|
+
gem.add_dependency 'rake'
|
11
12
|
gem.add_dependency 'activesupport', '>= 3.0.0'
|
12
|
-
|
13
|
+
|
13
14
|
gem.files = `git ls-files`.split($\)
|
14
15
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
15
16
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
data/lib/cbuilder.rb
CHANGED
@@ -1,9 +1,19 @@
|
|
1
|
-
|
1
|
+
begin
|
2
|
+
require 'active_support/proxy_object'
|
3
|
+
CbuilderProxy = ActiveSupport::ProxyObject
|
4
|
+
rescue LoadError
|
5
|
+
require 'active_support/basic_object'
|
6
|
+
CbuilderProxy = ActiveSupport::BasicObject
|
7
|
+
end
|
8
|
+
|
9
|
+
require 'csv'
|
10
|
+
CbuilderCSVProxy = ::RUBY_VERSION > '1.9' ? CSV : FasterCSV
|
11
|
+
|
2
12
|
require 'active_support/core_ext/array/access'
|
3
13
|
require 'active_support/core_ext/enumerable'
|
4
|
-
require 'csv'
|
5
14
|
|
6
|
-
|
15
|
+
|
16
|
+
class Cbuilder < CbuilderProxy
|
7
17
|
#Yields a builder and automatically turns the result into a CSV file
|
8
18
|
def self.encode(*args)
|
9
19
|
cbuilder = new(*args)
|
@@ -29,22 +39,13 @@ class Cbuilder < ActiveSupport::BasicObject
|
|
29
39
|
collection
|
30
40
|
end
|
31
41
|
end
|
32
|
-
|
42
|
+
|
33
43
|
# Encodes the current builder as CSV.
|
34
44
|
def target!
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
csv << (element.nil? ? '' : element)
|
40
|
-
end
|
41
|
-
end
|
42
|
-
else
|
43
|
-
FasterCSV.generate do |csv|
|
44
|
-
csv << @headers # pop header row
|
45
|
-
@attributes.each do |element| # body rows
|
46
|
-
csv << (element.nil? ? '' : element)
|
47
|
-
end
|
45
|
+
::CbuilderCSVProxy.generate do |csv|
|
46
|
+
csv << @headers # header row
|
47
|
+
@attributes.each do |element| # body rows
|
48
|
+
csv << (element.nil? ? '' : element)
|
48
49
|
end
|
49
50
|
end
|
50
51
|
end
|
metadata
CHANGED
@@ -1,30 +1,41 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cbuilder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.2
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Nate Berkopec
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2013-10-14 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rake
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
14
27
|
- !ruby/object:Gem::Dependency
|
15
28
|
name: activesupport
|
16
29
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
30
|
requirements:
|
19
|
-
- -
|
31
|
+
- - '>='
|
20
32
|
- !ruby/object:Gem::Version
|
21
33
|
version: 3.0.0
|
22
34
|
type: :runtime
|
23
35
|
prerelease: false
|
24
36
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
37
|
requirements:
|
27
|
-
- -
|
38
|
+
- - '>='
|
28
39
|
- !ruby/object:Gem::Version
|
29
40
|
version: 3.0.0
|
30
41
|
description:
|
@@ -35,6 +46,7 @@ extensions: []
|
|
35
46
|
extra_rdoc_files: []
|
36
47
|
files:
|
37
48
|
- .gitignore
|
49
|
+
- .travis.yml
|
38
50
|
- Gemfile
|
39
51
|
- LICENSE
|
40
52
|
- README.md
|
@@ -45,27 +57,26 @@ files:
|
|
45
57
|
- test/cbuilder_test.rb
|
46
58
|
homepage: http://github.com/nateberkopec/cbuilder
|
47
59
|
licenses: []
|
60
|
+
metadata: {}
|
48
61
|
post_install_message:
|
49
62
|
rdoc_options: []
|
50
63
|
require_paths:
|
51
64
|
- lib
|
52
65
|
required_ruby_version: !ruby/object:Gem::Requirement
|
53
|
-
none: false
|
54
66
|
requirements:
|
55
|
-
- -
|
67
|
+
- - '>='
|
56
68
|
- !ruby/object:Gem::Version
|
57
69
|
version: '0'
|
58
70
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
59
|
-
none: false
|
60
71
|
requirements:
|
61
|
-
- -
|
72
|
+
- - '>='
|
62
73
|
- !ruby/object:Gem::Version
|
63
74
|
version: '0'
|
64
75
|
requirements: []
|
65
76
|
rubyforge_project:
|
66
|
-
rubygems_version:
|
77
|
+
rubygems_version: 2.0.0
|
67
78
|
signing_key:
|
68
|
-
specification_version:
|
79
|
+
specification_version: 4
|
69
80
|
summary: Create CSV structures with a Builder-style DSL
|
70
81
|
test_files:
|
71
82
|
- test/cbuilder_test.rb
|