julia_builder 0.1.3 → 0.2.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 +4 -4
- data/.ruby-version +1 -1
- data/.travis.yml +4 -0
- data/CHANGELOG.md +22 -0
- data/README.md +17 -2
- data/julia.gemspec +6 -0
- data/lib/julia/action.rb +4 -4
- data/lib/julia/builder.rb +26 -11
- data/lib/julia/version.rb +1 -1
- metadata +47 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2d928afa23df12214960c45dee09e662560ca331
|
4
|
+
data.tar.gz: a505f103c0ad8fb7a2b933ff086c030f11b6728d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eb8f1d47ffe598f1352681451ed0fb3d1dd694dd30ebf940d78e73adb38c1ef5e77eca14a615422291e7f5c557271aa6dc2349d5481c58b5074ff281b9641728
|
7
|
+
data.tar.gz: 89743c2946e2fa7a84b0d83884785655a2bd818fec39dd8a3a06b36fc1e34524ef6de0d234a1de020bf338e6883c496bb8b15f12beb1e7a9a9ec9f4686419814
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.6.3
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
# Julia Builder changes
|
2
|
+
|
3
|
+
0.2.2
|
4
|
+
-----
|
5
|
+
|
6
|
+
- Make it compatible for ruby 3.0.0
|
7
|
+
|
8
|
+
0.2.1
|
9
|
+
-----
|
10
|
+
|
11
|
+
- Use csv's API to write headers
|
12
|
+
|
13
|
+
0.2.0
|
14
|
+
-----
|
15
|
+
|
16
|
+
- Add the ability to include mixins. See https://github.com/stevenbarragan/julia_builder/issues/8
|
17
|
+
|
18
|
+
0.1.5
|
19
|
+
-----------
|
20
|
+
|
21
|
+
- Speficy ruby 1.9+ as dependency
|
22
|
+
- Add `columns` method to set up many columns at once
|
data/README.md
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
# Julia Builder
|
2
|
+
[](https://badge.fury.io/rb/julia_builder)
|
2
3
|
[](https://travis-ci.org/stevenbarragan/julia_builder)
|
4
|
+
[](https://codeclimate.com/github/stevenbarragan/julia_builder)
|
5
|
+
[](https://codeclimate.com/github/stevenbarragan/julia_builder/coverage)
|
3
6
|
|
4
7
|
Julia helps you out to create flexible builders to easily export your queries to csv (for now).
|
5
8
|
|
@@ -39,6 +42,9 @@ require 'julia'
|
|
39
42
|
column :name
|
40
43
|
# header equals 'name', value will be `user.name`
|
41
44
|
|
45
|
+
# specify many columns at once
|
46
|
+
columns :name, :lastname, :dob
|
47
|
+
|
42
48
|
# when you need to do some extra work on the value you can pass a proc.
|
43
49
|
column 'Full name', -> { "#{ name.capitalize } #{ last_name.capitalize }" }
|
44
50
|
|
@@ -46,6 +52,13 @@ require 'julia'
|
|
46
52
|
column 'Type' do |user|
|
47
53
|
user.class.name
|
48
54
|
end
|
55
|
+
|
56
|
+
# include your own mixins
|
57
|
+
include ActionView::Helpers::DateHelper
|
58
|
+
|
59
|
+
column 'age' do |c|
|
60
|
+
time_ago_in_words c.dob
|
61
|
+
end
|
49
62
|
end
|
50
63
|
```
|
51
64
|
|
@@ -53,11 +66,13 @@ require 'julia'
|
|
53
66
|
|
54
67
|
```ruby
|
55
68
|
users = User.all
|
56
|
-
UserCsv.
|
69
|
+
UserCsv.build(users)
|
57
70
|
|
58
71
|
# or
|
72
|
+
UserCsv.build(users, <csv options>)
|
59
73
|
|
60
|
-
|
74
|
+
# e.g. no headers
|
75
|
+
UserCsv.build(users, write_headers: false)
|
61
76
|
```
|
62
77
|
|
63
78
|
Csv options could be anything [CSV::new](http://ruby-doc.org/stdlib-2.0.0/libdoc/csv/rdoc/CSV.html#method-c-new) understands, but they are optional.
|
data/julia.gemspec
CHANGED
@@ -19,7 +19,13 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
20
20
|
spec.require_paths = ["lib"]
|
21
21
|
|
22
|
+
spec.required_ruby_version = '>= 1.9'
|
23
|
+
|
22
24
|
spec.add_development_dependency "bundler", "~> 1.10"
|
23
25
|
spec.add_development_dependency "rake", "~> 10.0"
|
24
26
|
spec.add_development_dependency "rspec"
|
27
|
+
spec.add_development_dependency "activerecord"
|
28
|
+
spec.add_development_dependency "simplecov"
|
29
|
+
spec.add_development_dependency "sqlite3" unless RUBY_PLATFORM == "java"
|
30
|
+
spec.add_development_dependency "activerecord-jdbcsqlite3-adapter" if RUBY_PLATFORM == "java"
|
25
31
|
end
|
data/lib/julia/action.rb
CHANGED
@@ -2,14 +2,14 @@ module Julia
|
|
2
2
|
class Action
|
3
3
|
attr_reader :key, :action, :block
|
4
4
|
|
5
|
-
def initialize(key, action, &block)
|
6
|
-
@key = key
|
5
|
+
def initialize(key, action = nil, &block)
|
7
6
|
@action = action
|
8
7
|
@block = block
|
8
|
+
@key = key
|
9
9
|
end
|
10
10
|
|
11
|
-
def get_value(record)
|
12
|
-
return
|
11
|
+
def get_value(record, host)
|
12
|
+
return host.instance_exec(record, &block) if block
|
13
13
|
return record.instance_exec(&action) if action.is_a? Proc
|
14
14
|
|
15
15
|
record.send [action, key].compact.first
|
data/lib/julia/builder.rb
CHANGED
@@ -5,33 +5,48 @@ module Julia
|
|
5
5
|
attr_reader :collection, :csv_options
|
6
6
|
|
7
7
|
def initialize(collection, csv_options = Hash.new)
|
8
|
-
@collection, @csv_options = collection, csv_options
|
8
|
+
@collection, @csv_options = collection, default_options.merge(csv_options)
|
9
9
|
end
|
10
10
|
|
11
|
-
def
|
12
|
-
|
11
|
+
def default_options
|
12
|
+
{
|
13
|
+
headers: columns_config.keys,
|
14
|
+
write_headers: true
|
15
|
+
}
|
13
16
|
end
|
14
17
|
|
15
18
|
def self.column(keyname, action = nil, &block)
|
16
|
-
|
19
|
+
columns_config[keyname] = Action.new(keyname, action, &block)
|
17
20
|
end
|
18
21
|
|
19
|
-
def
|
20
|
-
|
21
|
-
|
22
|
+
def self.columns(*args)
|
23
|
+
args.each do |key|
|
24
|
+
column(key)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.columns_config
|
29
|
+
@columns_config ||= {}
|
30
|
+
end
|
22
31
|
|
32
|
+
def build
|
33
|
+
CSV.generate(**csv_options) do |csv|
|
23
34
|
collection.each do |record|
|
24
|
-
csv <<
|
25
|
-
action.get_value(record)
|
35
|
+
csv << columns_config.values.map do |action|
|
36
|
+
action.get_value(record, self)
|
26
37
|
end
|
27
38
|
end
|
28
39
|
end
|
29
40
|
end
|
30
41
|
|
42
|
+
def self.build(collection, csv_options = Hash.new)
|
43
|
+
new(collection, csv_options).build
|
44
|
+
end
|
45
|
+
|
31
46
|
protected
|
32
47
|
|
33
|
-
def
|
34
|
-
self.class.
|
48
|
+
def columns_config
|
49
|
+
self.class.columns_config
|
35
50
|
end
|
36
51
|
end
|
37
52
|
end
|
data/lib/julia/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: julia_builder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Steven Barragán
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-02-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -52,6 +52,48 @@ dependencies:
|
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: activerecord
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: simplecov
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: sqlite3
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
55
97
|
description: Create flexible builders to export your queries easier than ever
|
56
98
|
email:
|
57
99
|
- me@steven.mx
|
@@ -63,6 +105,7 @@ files:
|
|
63
105
|
- ".rspec"
|
64
106
|
- ".ruby-version"
|
65
107
|
- ".travis.yml"
|
108
|
+
- CHANGELOG.md
|
66
109
|
- CODE_OF_CONDUCT.md
|
67
110
|
- Gemfile
|
68
111
|
- LICENSE.txt
|
@@ -88,7 +131,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
88
131
|
requirements:
|
89
132
|
- - ">="
|
90
133
|
- !ruby/object:Gem::Version
|
91
|
-
version: '
|
134
|
+
version: '1.9'
|
92
135
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
93
136
|
requirements:
|
94
137
|
- - ">="
|
@@ -96,9 +139,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
96
139
|
version: '0'
|
97
140
|
requirements: []
|
98
141
|
rubyforge_project:
|
99
|
-
rubygems_version: 2.
|
142
|
+
rubygems_version: 2.5.2.3
|
100
143
|
signing_key:
|
101
144
|
specification_version: 4
|
102
145
|
summary: Export your queries easily and fast
|
103
146
|
test_files: []
|
104
|
-
has_rdoc:
|