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. You can also register default settings in initializers.
Add this line to your application's Gemfile:
gem 'babaloa'
And then execute:
$ bundle install
Or install it yourself as:
$ gem install babaloa
It is very easy to use. Pass an array as an argument. CSV file is generated.
arr = [["col1", "col2", "col3"],["row1-1", "row1-2", "row1-3"],["row2-1", "row2-2", "row2-3"]]
Babaloa.to_csv(arr) # => "col1,col2,col3\nrow1-1,row1-2,row1-3\nrow2-1,row2-2,row2-3\n"
You can also use Hash for the contents of the array. Like this.
arr = [{"col1" => "row1-1", "col2" => "row1-2", "col3" => "row1-3"},{ "col1" => "row2-1", "col2" => "row2-2", "col3" => "row2-3"}]
Babaloa.to_csv(arr) # => "col1,col2,col3\nrow1-1,row1-2,row1-3\nrow2-1,row2-2,row2-3\n"
If you use Ruby on Rails, you must to convert ActiveRecord object to Hash.
The easiest way is to add map(&:attributes)
at the end of the search results.
arr = SomeModel.all.map(&:attributes)
Babaloa.to_csv(arr)
Introduces the available options.
You can sort content for using sort options. You can use option value with Hash(only use desc) or String, Symbol.
arr = [{ "col1" => "row2-1", "col2" => "row2-2", "col3" => "row2-3"},{"col1" => "row1-1", "col2" => "row1-2", "col3" => "row1-3"}]
Babaloa.to_csv(arr, sort: "col1") # => "col1,col2,col3\nrow1-1,row1-2,row1-3\nrow2-1,row2-2,row2-3\n"
You can also use Hash for using desc. Like this.
arr = [{ "col1" => "row2-1", "col2" => "row2-2", "col3" => "row2-3"},{"col1" => "row1-1", "col2" => "row1-2", "col3" => "row1-3"}]
Babaloa.to_csv(arr, sort: "col1") # => col1,col2,col3\nrow2-1,row2-2,row2-3\nrow1-1,row1-2,row1-3\n"
You can sort content for using sort options if you use Hash for the contents of the array. You can use option value with Array or Symbol, String.
arr = [{ "col1" => "row2-1", "col2" => "row2-2", "col3" => "row2-3"},{"col1" => "row1-1", "col2" => "row1-2", "col3" => "row1-3"}]
Babaloa.to_csv(arr, only: %i(col1, col2)) # => "col1,col2\nrow2-1,row2-2\nrow1-1,row1-2\n"
Babaloa.to_csv(arr, except: :col3) # => "col1,col2\nrow2-1,row2-2\nrow1-1,row1-2\n"
You can transrate header for using t options. You can only use option value with Hash.
arr = [{ "col1" => "row2-1", "col2" => "row2-2", "col3" => "row2-3"},{"col1" => "row1-1", "col2" => "row1-2", "col3" => "row1-3"}]
Babaloa.to_csv(arr, t: {"col1" => "一番目", "col2" => "二番目", "col3" => "三番目"}) # => "一番目,二番目,三番目\nrow1-1,row1-2,row1-3\nrow2-1,row2-2,row2-3\n"
You can set options by default in initializers.
Describes the settings applied to all csv output. The usage of the options is the same.
Babaloa.configure {|config|
config.default = {
except: %i(updated_at created_at),
sort: { id: :desc },
t: { id: "ID", name: "NAME", age: "AGE" }
}
}
Describe the settings that apply separately. The usage of the options is the same.
Babaloa.configure {|config|
config.definition = {
test: {
except: %i(updated_at created_at),
sort: { id: :desc },
t: { id: "ID", name: "NAME", age: "AGE" }
}
}
}
And use it like this.
Babaloa.to_csv(arr, name: :test)
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.
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.
Bug reports and pull requests are welcome on GitHub at https://github.com/belion-freee/babaloa.
The gem is available as open source under the terms of the MIT License.