class CsvReader::Converter
Constants
- CONVERTERS
- DATE_MATCHER
A Regexp used to find and convert some common Date formats.
- DATE_TIME_MATCHER
A Regexp used to find and convert some common DateTime formats.
- HEADER_CONVERTERS
Private Class Methods
create_converters( converters )
click to toggle source
# File lib/csvreader/converter.rb, line 91 def self.create_converters( converters ) new( converters, CONVERTERS ) end
create_header_converters( converters )
click to toggle source
# File lib/csvreader/converter.rb, line 87 def self.create_header_converters( converters ) new( converters, HEADER_CONVERTERS ) end
new( converters, registry=CONVERTERS )
click to toggle source
# File lib/csvreader/converter.rb, line 97 def initialize( converters, registry=CONVERTERS ) converters = case converters when nil then [] when Array then converters else [converters] end @converters = [] converters.each do |converter| if converter.is_a? Proc # custom code block add_converter( registry, &converter) else # by name add_converter( converter, registry ) end end end
Private Instance Methods
add_converter( name=nil, registry, &converter )
click to toggle source
# File lib/csvreader/converter.rb, line 138 def add_converter( name=nil, registry, &converter ) if name.nil? # custom converter @converters << converter else # named converter combo = registry[name] case combo when Array # combo converter combo.each do |converter_name| add_converter( converter_name, registry ) end else # individual named converter @converters << combo end end end
convert( value, index_or_header=nil )
click to toggle source
# File lib/csvreader/converter.rb, line 119 def convert( value, index_or_header=nil ) return value if value.nil? @converters.each do |converter| value = if converter.arity == 1 # straight converter converter.call( value ) else ## note: for CsvReader pass in the zero-based field/column index (integer) ## for CsvHashReader pass in the header/field/column name (string) converter.call( value, index_or_header ) end break unless value.is_a?( String ) # note: short-circuit pipeline for speed end value # final state of value, converted or original end
empty?()
click to toggle source
# File lib/csvreader/converter.rb, line 117 def empty?() @converters.empty?; end
to_a()
click to toggle source
# File lib/csvreader/converter.rb, line 116 def to_a() @converters; end