module SimpleCsvCreator

SimpleCsvCreator has DSL to build the csv it's inspired by activeadmin csv example: class User

attr_reader :name, :age, :gender
def initialize(name, age, gender)
  @name = name
  @age = age
  @gender = gender
end

end

user1 = User.new('test', 20, 'female') user2 = User.new('mobile', 13, 'male') csv_creator = SimpleCsvCreator.schema do

column(:name) # if without block then it will run the name given(user.name), header name will be titleize of name
column(:age) { |r| r.age + ' years' } # if with block will run the block
column('User Gender') { |r| r.gender } # if want to use custom title need to give the block

end result = SimpleCsvCreator.simple_generate([user1, user2]) csv_parse = CSV.parse(result) csv_parse: [

['Name', 'Age', 'User Gender'],
['test', '20 years', 'female'],
['mobile', '13 years', 'male']

]

Sometimes you want to do lazy fetch e.g: `find_each` method in ActiveRecord. If you use simple_generate you won't be able to use this kind of method because simple_generate need the array with all of its elements. To handle it you can use `generate_using` method e.g: generator = Proc.new do |&block|

resources.each do |resource|
  block.call(resource)
end

end result = SimpleCsvCreator.generate_using(generator) end

Constants

VERSION

Public Class Methods

schema(&block) click to toggle source
# File lib/simple_csv_creator.rb, line 45
def self.schema(&block)
  csv_creator = SimpleCsvCreator::Generator.new
  csv_creator.instance_eval(&block)
  csv_creator
end