julia_builder 0.1.3 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
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: