Module: ArrayHasher
- Defined in:
- lib/array_hasher.rb,
lib/array_hasher/version.rb,
lib/array_hasher/formatter.rb
Defined Under Namespace
Classes: Formatter
Constant Summary collapse
- VERSION =
"0.1.5"
Class Method Summary collapse
- .csv_each(path, ext_types = {}, &block) ⇒ Object
- .new_formatter(cols) ⇒ Object
- .parse_format(definition) ⇒ Object
Class Method Details
.csv_each(path, ext_types = {}, &block) ⇒ Object
28 29 30 31 32 33 34 35 36 37 |
# File 'lib/array_hasher.rb', line 28 def csv_each(path, ext_types = {}, &block) csv = CSV.open(path) formatter = new_formatter(parse_format(csv.gets)) formatter.types.merge!(ext_types) if block csv.each { |line| block.call(formatter.parse(line)) } else Enumerator.new { |y| csv.each { |line| y << formatter.parse(line) } } end end |
.new_formatter(cols) ⇒ Object
12 13 14 |
# File 'lib/array_hasher.rb', line 12 def new_formatter(cols) Formatter.new(cols) end |
.parse_format(definition) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/array_hasher.rb', line 16 def parse_format(definition) definition.map do |val| name, type, opts = val.to_s.split(':', 3) [ (name && name.length > 0) ? name.to_sym : nil, (type && type.length > 0) ? type.to_sym : nil, (opts && opts =~ /\A\{.*\}\z/) ? JSON.parse(opts) : {} ] end end |