dump-parser

I found my self doing this serveral times:

Goal of this gem is to provide a clean DSL to parse strings (CSV fields) into usable objects.

Example

require 'dump-parser'

DumpParser.register :dd_mm_yyyy_date_time do
  nil_if_empty
  require_format %r(\A(\d{2})\.(\d{2})\.(\d{4})\Z)
  begin
    DateTime.new(match[3].to_i,match[2].to_i,match[1].to_i)
  rescue ArgumentError
    error 'is invalid date'
  end
end

DumpParser.register :required_integer do
  require_format %r(\A\d+\Z)
  value.to_i(10)
end

DumpParser.execute :dd_mm_yyyy_date_time, ""  # returns nil
DumpParser.execute :dd_mm_yyyy_date_time, "10.01.1901"  # returns DateTime.new(1901,01,10)
DumpParser.execute :dd_mm_yyyy_date_time, "invalid"     # raises DumpParser::ParseException.new('dd_mm_yyyy_date: value "invalid" does not match required format')
DumpParser.execute :dd_mm_yyyy_date_time, "31.02.2011"  # raises DumpParser::ParseException.new('dd_mm_yyyy_date: value "31.02.2011" is invalid date')

Contributing to dump-parser

Copyright © 2011 Markus Schirp. See LICENSE.txt for further details.