module DumbDelimited
Constants
- VERSION
Public Class Methods
Returns a model class for delimited data consisting of the specified columns
. The returned class inherits from Ruby's {docs.ruby-lang.org/en/trunk/Struct.html Struct
}, allowing data manipulation via accessor methods, via indexing by column name, and via indexing by column number. See {ClassMethods} and {InstanceMethods} for the additional methods the returned class provides.
@example
class Product < DumbDelimited[:sku, :name, :base_price, :sale_price] def on_sale? sale_price.to_f < base_price.to_f end end
@example
Customer = DumbDelimited[:name, :email, :address]
@param columns [Array<Symbol>] @return [Class<Struct>]
# File lib/dumb_delimited.rb, line 27 def self.[](*columns) Struct.new(*columns) do extend DumbDelimited::ClassMethods include DumbDelimited::InstanceMethods end end
Convenience shortcut to create a model class and set {ClassMethods#delimiter} to +“,”+.
Note: This method exists mostly for parity with {psv} and {tsv}. Unless CSV::DEFAULT_OPTIONS
has been modified, the delimiter will already default to +“,”+.
@example
# This... Point = DumbDelimited.csv(:x, :y, :z) # ...is equivalent to: Point = DumbDelimited[:x, :y, :z] Point.delimiter = ","
@param columns [Array<Symbol>] @return [Class<Struct>]
# File lib/dumb_delimited.rb, line 51 def self.csv(*columns) klass = self[*columns] klass.delimiter = "," klass end
Convenience shortcut to create a model class and set {ClassMethods#delimiter} to +“|”+.
@example
# This... Point = DumbDelimited.psv(:x, :y, :z) # ...is equivalent to: Point = DumbDelimited[:x, :y, :z] Point.delimiter = "|"
@param columns [Array<Symbol>] @return [Class<Struct>]
# File lib/dumb_delimited.rb, line 70 def self.psv(*columns) klass = self[*columns] klass.delimiter = "|" klass end
Convenience shortcut to create a model class and set {ClassMethods#delimiter} to "\t"
.
@example
# This... Point = DumbDelimited.tsv(:x, :y, :z) # ...is equivalent to: Point = DumbDelimited[:x, :y, :z] Point.delimiter = "\t"
@param columns [Array<Symbol>] @return [Class<Struct>]
# File lib/dumb_delimited.rb, line 89 def self.tsv(*columns) klass = self[*columns] klass.delimiter = "\t" klass end