module Sequel::Plugins::CsvSerializer::ClassMethods

Attributes

csv_serializer_opts[R]

The default opts to use when serializing model objects to CSV

Public Instance Methods

array_from_csv(csv, opts = {}) click to toggle source

Attempt to parse an array of instances from the given CSV string

# File lib/sequel/plugins/csv_serializer.rb, line 90
def array_from_csv(csv, opts = {})
  CSV.parse(csv, process_csv_serializer_opts(opts)).map do |row|
    row = row.to_hash
    row.delete(nil)
    new(row)
  end
end
freeze() click to toggle source

Freeze csv serializier opts when freezing model class

Calls superclass method
# File lib/sequel/plugins/csv_serializer.rb, line 99
def freeze
  @csv_serializer_opts.freeze.each_value do |v|
    v.freeze if v.is_a?(Array) || v.is_a?(Hash)
  end

  super
end
from_csv(csv, opts = {}) click to toggle source

Attempt to parse a single instance from the given CSV string

# File lib/sequel/plugins/csv_serializer.rb, line 108
def from_csv(csv, opts = {})
  new.from_csv(csv, opts)
end
process_csv_serializer_opts(opts) click to toggle source

Convert the options hash to one that can be passed to CSV.

# File lib/sequel/plugins/csv_serializer.rb, line 113
def process_csv_serializer_opts(opts)
  opts = (csv_serializer_opts || {}).merge(opts)
  opts_cols = opts.delete(:columns)
  opts_include = opts.delete(:include)
  opts_except = opts.delete(:except)
  opts[:headers] ||= Array(opts.delete(:only) || opts_cols || columns) + Array(opts_include) - Array(opts_except)
  opts
end