babaloa 0.1.0 → 0.1.1
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/.circleci/config.yml +68 -0
- data/Gemfile +4 -1
- data/Gemfile.lock +4 -1
- data/README.md +95 -7
- data/lib/babaloa.rb +9 -9
- data/lib/babaloa/version.rb +1 -1
- metadata +3 -3
- data/.travis.yml +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 504a9eb60037d436fe931f54f40ea31b90a321c7d1f8bcfc824699c1b42e6554
|
4
|
+
data.tar.gz: e8aa654cb29fdc99586bec36dc581817ba0215e0b7ed09f6803e21ac9cf76634
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aae6439a396cab2139730381e65e9071cf6af9828646191ec1ba6b9a9d193f2948a039ade8540088b0001175912c5c38b3ac3f12f4c3558bcee4112563886421
|
7
|
+
data.tar.gz: ffa8ef6242d3a8bae401f772e0e1524ef56ca95c80c83edf2f7632613176aae5f77cb02b084a50bf42330f0317bf2c28afe933a42fef8f4b108cdd2a23cab99a
|
@@ -0,0 +1,68 @@
|
|
1
|
+
# Ruby CircleCI 2.0 configuration file
|
2
|
+
#
|
3
|
+
# Check https://circleci.com/docs/2.0/language-ruby/ for more details
|
4
|
+
#
|
5
|
+
version: 2
|
6
|
+
jobs:
|
7
|
+
build:
|
8
|
+
docker:
|
9
|
+
# specify the version you desire here
|
10
|
+
- image: circleci/ruby:2.6.3
|
11
|
+
|
12
|
+
# Specify service dependencies here if necessary
|
13
|
+
# CircleCI maintains a library of pre-built images
|
14
|
+
# documented at https://circleci.com/docs/2.0/circleci-images/
|
15
|
+
# - image: circleci/postgres:9.4
|
16
|
+
|
17
|
+
working_directory: ~/repo
|
18
|
+
|
19
|
+
branches:
|
20
|
+
only:
|
21
|
+
- master
|
22
|
+
|
23
|
+
steps:
|
24
|
+
- checkout
|
25
|
+
|
26
|
+
# Download and cache dependencies
|
27
|
+
- restore_cache:
|
28
|
+
keys:
|
29
|
+
- v1-dependencies-{{ checksum "Gemfile.lock" }}
|
30
|
+
# fallback to using the latest cache if no exact match is found
|
31
|
+
- v1-dependencies-
|
32
|
+
|
33
|
+
- run:
|
34
|
+
name: install dependencies
|
35
|
+
command: |
|
36
|
+
gem install bundler:2.0.1
|
37
|
+
bundle install --jobs=4 --retry=3 --path vendor/bundle
|
38
|
+
|
39
|
+
- save_cache:
|
40
|
+
paths:
|
41
|
+
- ./vendor/bundle
|
42
|
+
key: v1-dependencies-{{ checksum "Gemfile.lock" }}
|
43
|
+
|
44
|
+
# Database setup
|
45
|
+
# - run: bundle exec rake db:create
|
46
|
+
# - run: bundle exec rake db:schema:load
|
47
|
+
|
48
|
+
# run tests!
|
49
|
+
- run:
|
50
|
+
name: run tests
|
51
|
+
command: |
|
52
|
+
mkdir /tmp/test-results
|
53
|
+
TEST_FILES="$(circleci tests glob "spec/**/*_spec.rb" | \
|
54
|
+
circleci tests split --split-by=timings)"
|
55
|
+
|
56
|
+
bundle exec rspec \
|
57
|
+
--format progress \
|
58
|
+
--format RspecJunitFormatter \
|
59
|
+
--out /tmp/test-results/rspec.xml \
|
60
|
+
--format progress \
|
61
|
+
$TEST_FILES
|
62
|
+
|
63
|
+
# collect reports
|
64
|
+
- store_test_results:
|
65
|
+
path: /tmp/test-results
|
66
|
+
- store_artifacts:
|
67
|
+
path: /tmp/test-results
|
68
|
+
destination: test-results
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
babaloa (0.1.
|
4
|
+
babaloa (0.1.1)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
@@ -22,6 +22,8 @@ GEM
|
|
22
22
|
diff-lcs (>= 1.2.0, < 2.0)
|
23
23
|
rspec-support (~> 3.8.0)
|
24
24
|
rspec-support (3.8.0)
|
25
|
+
rspec_junit_formatter (0.4.1)
|
26
|
+
rspec-core (>= 2, < 4, != 2.12.0)
|
25
27
|
|
26
28
|
PLATFORMS
|
27
29
|
ruby
|
@@ -32,6 +34,7 @@ DEPENDENCIES
|
|
32
34
|
byebug
|
33
35
|
rake (~> 10.0)
|
34
36
|
rspec (~> 3.0)
|
37
|
+
rspec_junit_formatter
|
35
38
|
|
36
39
|
BUNDLED WITH
|
37
40
|
2.0.1
|
data/README.md
CHANGED
@@ -1,8 +1,9 @@
|
|
1
|
-
|
1
|
+
[](https://circleci.com/gh/belion-freee/babaloa/tree/master)
|
2
2
|
|
3
|
-
|
3
|
+
# Babaloa
|
4
4
|
|
5
|
-
|
5
|
+
This is a gem that will convert to CSV if you pass an array. In addition to conversion, sorting, column specification, and translation can be optionally specified.
|
6
|
+
You can also register default settings in initializers.
|
6
7
|
|
7
8
|
## Installation
|
8
9
|
|
@@ -21,18 +22,105 @@ Or install it yourself as:
|
|
21
22
|
$ gem install babaloa
|
22
23
|
|
23
24
|
## Usage
|
25
|
+
It is very easy to use. Pass an array as an argument. CSV file is generated.
|
26
|
+
|
27
|
+
```ruby
|
28
|
+
arr = [["col1", "col2", "col3"],["row1-1", "row1-2", "row1-3"],["row2-1", "row2-2", "row2-3"]]
|
29
|
+
Babaloa.to_csv(arr) # => "col1,col2,col3\nrow1-1,row1-2,row1-3\nrow2-1,row2-2,row2-3\n"
|
30
|
+
```
|
31
|
+
|
32
|
+
You can also use Hash for the contents of the array. Like this.
|
33
|
+
|
34
|
+
```ruby
|
35
|
+
arr = [{"col1" => "row1-1", "col2" => "row1-2", "col3" => "row1-3"},{ "col1" => "row2-1", "col2" => "row2-2", "col3" => "row2-3"}]
|
36
|
+
Babaloa.to_csv(arr) # => "col1,col2,col3\nrow1-1,row1-2,row1-3\nrow2-1,row2-2,row2-3\n"
|
37
|
+
```
|
38
|
+
|
39
|
+
## Options
|
40
|
+
Introduces the available options.
|
41
|
+
|
42
|
+
### Sort options
|
43
|
+
You can sort content for using sort options.
|
44
|
+
You can use option value with Hash(only use desc) or String, Symbol.
|
45
|
+
**Be sure to use the same hash key type as the header name** to be specified. It does not move if the type is different. In addition, in case of comparing with `2, 3, 100` note that the order will be `100, 2, 3` when comparing by character string.
|
46
|
+
|
47
|
+
```ruby
|
48
|
+
arr = [{ "col1" => "row2-1", "col2" => "row2-2", "col3" => "row2-3"},{"col1" => "row1-1", "col2" => "row1-2", "col3" => "row1-3"}]
|
49
|
+
Babaloa.to_csv(arr, sort: "col1") # => "col1,col2,col3\nrow1-1,row1-2,row1-3\nrow2-1,row2-2,row2-3\n"
|
50
|
+
```
|
51
|
+
|
52
|
+
You can also use Hash for using desc. Like this.
|
53
|
+
|
54
|
+
```ruby
|
55
|
+
arr = [{ "col1" => "row2-1", "col2" => "row2-2", "col3" => "row2-3"},{"col1" => "row1-1", "col2" => "row1-2", "col3" => "row1-3"}]
|
56
|
+
Babaloa.to_csv(arr, sort: "col1") # => col1,col2,col3\nrow2-1,row2-2,row2-3\nrow1-1,row1-2,row1-3\n"
|
57
|
+
```
|
58
|
+
|
59
|
+
### Only/Except options
|
60
|
+
You can sort content for using sort options if you use Hash for the contents of the array.
|
61
|
+
You can use option value with Array or Symbol.
|
24
62
|
|
25
|
-
|
63
|
+
```ruby
|
64
|
+
arr = [{ "col1" => "row2-1", "col2" => "row2-2", "col3" => "row2-3"},{"col1" => "row1-1", "col2" => "row1-2", "col3" => "row1-3"}]
|
65
|
+
Babaloa.to_csv(arr, only: %i(col1, col2)) # => "col1,col2\nrow2-1,row2-2\nrow1-1,row1-2\n"
|
66
|
+
Babaloa.to_csv(arr, except: :col3) # => "col1,col2\nrow2-1,row2-2\nrow1-1,row1-2\n"
|
67
|
+
```
|
68
|
+
|
69
|
+
### Transrate options
|
70
|
+
You can transrate header for using t options.
|
71
|
+
You can only use option value with Hash.
|
72
|
+
|
73
|
+
```ruby
|
74
|
+
arr = [{ "col1" => "row2-1", "col2" => "row2-2", "col3" => "row2-3"},{"col1" => "row1-1", "col2" => "row1-2", "col3" => "row1-3"}]
|
75
|
+
Babaloa.to_csv(arr, t: {"col1" => "一番目", "col2" => "二番目", "col3" => "三番目"}) # => "一番目,二番目,三番目\nrow1-1,row1-2,row1-3\nrow2-1,row2-2,row2-3\n"
|
76
|
+
```
|
77
|
+
|
78
|
+
## Initializer
|
79
|
+
You can set options by default in initializers.
|
80
|
+
|
81
|
+
### default
|
82
|
+
Describes the settings applied to all csv output. The usage of the options is the same.
|
83
|
+
|
84
|
+
```ruby
|
85
|
+
Babaloa.configure {|config|
|
86
|
+
config.default = {
|
87
|
+
except: %i(updated_at created_at),
|
88
|
+
sort: { id: :desc },
|
89
|
+
t: { id: "ID", name: "NAME", age: "AGE" }
|
90
|
+
}
|
91
|
+
}
|
92
|
+
```
|
93
|
+
|
94
|
+
### definition
|
95
|
+
Describe the settings that apply separately. The usage of the options is the same.
|
96
|
+
|
97
|
+
```ruby
|
98
|
+
Babaloa.configure {|config|
|
99
|
+
config.definition = {
|
100
|
+
test: {
|
101
|
+
except: %i(updated_at created_at),
|
102
|
+
sort: { id: :desc },
|
103
|
+
t: { id: "ID", name: "NAME", age: "AGE" }
|
104
|
+
}
|
105
|
+
}
|
106
|
+
}
|
107
|
+
```
|
108
|
+
|
109
|
+
And use it like this.
|
110
|
+
|
111
|
+
```ruby
|
112
|
+
Babaloa.to_csv(arr, name: :test)
|
113
|
+
```
|
26
114
|
|
27
115
|
## Development
|
28
116
|
|
29
|
-
After checking out the repo, run `bin/setup` to install dependencies. Then, run
|
117
|
+
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.
|
30
118
|
|
31
|
-
To install this gem onto your local machine, run
|
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 release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
32
120
|
|
33
121
|
## Contributing
|
34
122
|
|
35
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
123
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/belion-freee/babaloa.
|
36
124
|
|
37
125
|
## License
|
38
126
|
|
data/lib/babaloa.rb
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
require "babaloa/version"
|
2
2
|
require "babaloa/config"
|
3
3
|
require "csv"
|
4
|
-
|
4
|
+
|
5
5
|
module Babaloa
|
6
6
|
class BabaloaError < StandardError; end
|
7
7
|
|
8
8
|
class << self
|
9
9
|
def to_csv(data, h = true, **options)
|
10
|
-
raise
|
11
|
-
raise
|
10
|
+
raise BabaloaError, "data must be Array" unless data.is_a?(Array)
|
11
|
+
raise BabaloaError, "content must be Array or Hash" unless data.empty? || data.first.is_a?(Array) || data.first.is_a?(Hash)
|
12
12
|
|
13
13
|
if h && !data.empty?
|
14
14
|
if data.first.is_a?(Hash)
|
@@ -24,10 +24,10 @@ module Babaloa
|
|
24
24
|
end
|
25
25
|
|
26
26
|
CSV.generate do |csv|
|
27
|
-
csv << transrate_by(header, **options) if h && header
|
27
|
+
csv << transrate_by(header.dup, **options) if h && header
|
28
28
|
data.each{|res|
|
29
29
|
if res.is_a?(Hash)
|
30
|
-
raise
|
30
|
+
raise BabaloaError, "Header required if content is Hash" unless h
|
31
31
|
csv << header.map {|k| res[k] || res[k.to_s] }
|
32
32
|
else
|
33
33
|
csv << res
|
@@ -49,7 +49,7 @@ module Babaloa
|
|
49
49
|
sort = header.index(sort.to_sym) if data.first.is_a?(Array)
|
50
50
|
data.sort_by! {|col| col[sort] }
|
51
51
|
else
|
52
|
-
raise
|
52
|
+
raise BabaloaError, "sort option must be Hash, Symbol, String."
|
53
53
|
end
|
54
54
|
|
55
55
|
data
|
@@ -64,7 +64,7 @@ module Babaloa
|
|
64
64
|
elsif only.is_a?(Symbol)
|
65
65
|
header.select! {|k| only == k }
|
66
66
|
else
|
67
|
-
raise
|
67
|
+
raise BabaloaError, "only option must be Array, Symbol"
|
68
68
|
end
|
69
69
|
|
70
70
|
header
|
@@ -79,7 +79,7 @@ module Babaloa
|
|
79
79
|
elsif except.is_a?(Symbol)
|
80
80
|
header.reject! {|k| except == k }
|
81
81
|
else
|
82
|
-
raise
|
82
|
+
raise BabaloaError, "except option must be Array, Symbol"
|
83
83
|
end
|
84
84
|
|
85
85
|
header
|
@@ -92,7 +92,7 @@ module Babaloa
|
|
92
92
|
if t.is_a?(Hash)
|
93
93
|
header.map! {|k| t[k] || t[k.to_s] }.compact!
|
94
94
|
else
|
95
|
-
raise
|
95
|
+
raise BabaloaError, "t option must be Hash"
|
96
96
|
end
|
97
97
|
|
98
98
|
header
|
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.1
|
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-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -59,9 +59,9 @@ executables: []
|
|
59
59
|
extensions: []
|
60
60
|
extra_rdoc_files: []
|
61
61
|
files:
|
62
|
+
- ".circleci/config.yml"
|
62
63
|
- ".gitignore"
|
63
64
|
- ".rspec"
|
64
|
-
- ".travis.yml"
|
65
65
|
- Dockerfile
|
66
66
|
- Gemfile
|
67
67
|
- Gemfile.lock
|