babaloa 0.1.3 → 0.1.4
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/Gemfile.lock +1 -1
- data/README.md +10 -1
- data/lib/babaloa.rb +20 -11
- data/lib/babaloa/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c5202306d0fb523ce7eb9ff36eaa25bac96e1bb992c1b18fc4a4b01ce4ca243d
|
4
|
+
data.tar.gz: b7a39bceee3cf8f3703d982e532ca48c95e2b9562e323aa474d6a9cea9c96ae3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: af9671f14b1403bfb673af28417150701cf7210f53e4276620e2a2e3e4fd5893c7a2cb25543a779b76d8638d2fbda3ddc07e015ea0e4939b1541374546711587
|
7
|
+
data.tar.gz: 8ce736aa3d0e2bcb816637f93b8f9cd155a68569c64534cfb9f255581ca7733d2158b5523ee76b2fdd9de42edb6fa633be0f9f5ceedaa7b512d6f4194b16d065
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -36,6 +36,15 @@ arr = [{"col1" => "row1-1", "col2" => "row1-2", "col3" => "row1-3"},{ "col1" =>
|
|
36
36
|
Babaloa.to_csv(arr) # => "col1,col2,col3\nrow1-1,row1-2,row1-3\nrow2-1,row2-2,row2-3\n"
|
37
37
|
```
|
38
38
|
|
39
|
+
### Ruby on Rails
|
40
|
+
If you use Ruby on Rails, you must to convert ActiveRecord object to Hash.
|
41
|
+
The easiest way is to add `map(&:attributes)` at the end of the search results.
|
42
|
+
|
43
|
+
```ruby
|
44
|
+
arr = SomeModel.all.map(&:attributes)
|
45
|
+
Babaloa.to_csv(arr)
|
46
|
+
```
|
47
|
+
|
39
48
|
## Options
|
40
49
|
Introduces the available options.
|
41
50
|
|
@@ -116,7 +125,7 @@ Babaloa.to_csv(arr, name: :test)
|
|
116
125
|
|
117
126
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `./qs spec` to run the tests. You can also run `./qs run app bin/console` for an interactive prompt that will allow you to experiment.
|
118
127
|
|
119
|
-
To install this gem onto your local machine, run `./qs rake install`. To release a new version, update the version number in `version.rb`, and then run `./qs rake
|
128
|
+
To install this gem onto your local machine, run `./qs rake install`. To release a new version, update the version number in `version.rb`, and then run `./qs rake build` and `./qs run gem push pkg/babaloa-x.x.x.gem`, which will push the `.gem` file to [rubygems.org](https://rubygems.org).
|
120
129
|
|
121
130
|
## Contributing
|
122
131
|
|
data/lib/babaloa.rb
CHANGED
@@ -40,16 +40,19 @@ module Babaloa
|
|
40
40
|
sort = options[:sort] || configuration.define(options[:name], :sort) || configuration.default[:sort]
|
41
41
|
return data unless sort
|
42
42
|
|
43
|
-
conv = proc {|
|
43
|
+
conv = proc {|h, k|
|
44
|
+
v = h[k] || h[k.to_s] || h[k.to_sym]
|
45
|
+
v.is_a?(String) && v =~ /^\d+$/ ? v.to_i : v
|
46
|
+
}
|
44
47
|
|
45
48
|
if sort.is_a?(Hash)
|
46
49
|
k, v = sort.first
|
47
50
|
k = header.index(k.to_sym) if data.first.is_a?(Array)
|
48
|
-
data.sort_by! {|col| conv.(col
|
51
|
+
data.sort_by! {|col| conv.(col, k) }
|
49
52
|
data.reverse! if v == :desc
|
50
|
-
elsif
|
53
|
+
elsif is_s?(sort)
|
51
54
|
sort = header.index(sort.to_sym) if data.first.is_a?(Array)
|
52
|
-
data.sort_by! {|col| conv.(col
|
55
|
+
data.sort_by! {|col| conv.(col, sort) }
|
53
56
|
else
|
54
57
|
raise BabaloaError, "sort option must be Hash, Symbol, String."
|
55
58
|
end
|
@@ -63,10 +66,10 @@ module Babaloa
|
|
63
66
|
|
64
67
|
if only.is_a?(Array)
|
65
68
|
header.select! {|k| only.include?(k) }
|
66
|
-
elsif
|
67
|
-
header.select! {|k|
|
69
|
+
elsif is_s?(only)
|
70
|
+
header.select! {|k| k == only.to_sym }
|
68
71
|
else
|
69
|
-
raise BabaloaError, "only option must be Array, Symbol"
|
72
|
+
raise BabaloaError, "only option must be Array, Symbol, String."
|
70
73
|
end
|
71
74
|
|
72
75
|
header
|
@@ -78,10 +81,10 @@ module Babaloa
|
|
78
81
|
|
79
82
|
if except.is_a?(Array)
|
80
83
|
header.reject! {|k| except.include?(k) }
|
81
|
-
elsif
|
82
|
-
header.reject! {|k|
|
84
|
+
elsif is_s?(except)
|
85
|
+
header.reject! {|k| k == except.to_sym }
|
83
86
|
else
|
84
|
-
raise BabaloaError, "except option must be Array, Symbol"
|
87
|
+
raise BabaloaError, "except option must be Array, Symbol, String."
|
85
88
|
end
|
86
89
|
|
87
90
|
header
|
@@ -92,12 +95,18 @@ module Babaloa
|
|
92
95
|
return header unless t
|
93
96
|
|
94
97
|
if t.is_a?(Hash)
|
95
|
-
header.map! {|k| t[k] || t[k.to_s] }.compact!
|
98
|
+
header.map! {|k| t[k] || t[k.to_s] || k }.compact!
|
96
99
|
else
|
97
100
|
raise BabaloaError, "t option must be Hash"
|
98
101
|
end
|
99
102
|
|
100
103
|
header
|
101
104
|
end
|
105
|
+
|
106
|
+
private
|
107
|
+
|
108
|
+
def is_s?(val)
|
109
|
+
val.is_a?(Symbol) || val.is_a?(String)
|
110
|
+
end
|
102
111
|
end
|
103
112
|
end
|
data/lib/babaloa/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: babaloa
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- belion-freee
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-05-
|
11
|
+
date: 2019-05-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|