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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 80ca945894a0a74b6723e1fd75350bceb5b9e612
4
- data.tar.gz: 53d1c573ec4c9769eed995b8a62df974e9c12f00
3
+ metadata.gz: 2d928afa23df12214960c45dee09e662560ca331
4
+ data.tar.gz: a505f103c0ad8fb7a2b933ff086c030f11b6728d
5
5
  SHA512:
6
- metadata.gz: a1a4e15d9ab6a532a00793cd68a543212d6ae402ccddab15d7ccb6d3ec7cd257d270fc03426b4900f0ed49e6e926c041581794a742b2d1b54bb8e649bfb159ca
7
- data.tar.gz: 6edd408e3c2053c71c3ab854bb2f0772ed84ab4c9371a0da701843b96cb944e781de733822896e83db4ba7b408f6b083895e09997bf41075ef098e0149232fab
6
+ metadata.gz: eb8f1d47ffe598f1352681451ed0fb3d1dd694dd30ebf940d78e73adb38c1ef5e77eca14a615422291e7f5c557271aa6dc2349d5481c58b5074ff281b9641728
7
+ data.tar.gz: 89743c2946e2fa7a84b0d83884785655a2bd818fec39dd8a3a06b36fc1e34524ef6de0d234a1de020bf338e6883c496bb8b15f12beb1e7a9a9ec9f4686419814
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.2.2
1
+ 2.6.3
data/.travis.yml CHANGED
@@ -1,4 +1,8 @@
1
1
  language: ruby
2
2
  rvm:
3
3
  - 2.2.2
4
+ - jruby
4
5
  before_install: gem install bundler -v 1.10.6
6
+ addons:
7
+ code_climate:
8
+ repo_token: 27bd1448bf5f9392ee41342332293833dcf3d5a3e30db53c9e4aaea4ec743dca
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
+ [![Gem Version](https://badge.fury.io/rb/julia_builder.svg)](https://badge.fury.io/rb/julia_builder)
2
3
  [![Build Status](https://travis-ci.org/stevenbarragan/julia_builder.svg?branch=master)](https://travis-ci.org/stevenbarragan/julia_builder)
4
+ [![Code Climate](https://codeclimate.com/github/stevenbarragan/julia_builder/badges/gpa.svg)](https://codeclimate.com/github/stevenbarragan/julia_builder)
5
+ [![Test Coverage](https://codeclimate.com/github/stevenbarragan/julia_builder/badges/coverage.svg)](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.new(users).build
69
+ UserCsv.build(users)
57
70
 
58
71
  # or
72
+ UserCsv.build(users, <csv options>)
59
73
 
60
- UserCsv.new(users, <csv options>).build
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 block.call(record) if block
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 self.columns
12
- @columns ||= {}
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
- self.columns[keyname] = Action.new(keyname, action, &block)
19
+ columns_config[keyname] = Action.new(keyname, action, &block)
17
20
  end
18
21
 
19
- def build
20
- CSV.generate(csv_options) do |csv|
21
- csv << columns.keys
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 << columns.values.map do |action|
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 columns
34
- self.class.columns
48
+ def columns_config
49
+ self.class.columns_config
35
50
  end
36
51
  end
37
52
  end
data/lib/julia/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Julia
2
- VERSION = "0.1.3"
2
+ VERSION = "0.2.2"
3
3
  end
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.1.3
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: 2015-11-18 00:00:00.000000000 Z
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: '0'
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.4.5
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: