Class: ToParsedObj::Parsers
- Includes:
- FromHash
- Defined in:
- lib/to_parsed_obj.rb
Instance Method Summary collapse
- #add(ops, &b) ⇒ Object
- #add_basic! ⇒ Object
- #each_parser(one_time, &b) ⇒ Object
- #parse(obj, one_time = {}) ⇒ Object
Instance Method Details
#add(ops, &b) ⇒ Object
57 58 59 60 |
# File 'lib/to_parsed_obj.rb', line 57 def add(ops,&b) ops[:convertor] ||= b if block_given? self.parsers << ToParsedObj::SingleParser.new(ops) end |
#add_basic! ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/to_parsed_obj.rb', line 61 def add_basic! require 'date' add(:matcher => /^-?[0-9]+$/, :convertor => :to_i) add(:matcher => [/^-?[0-9\.]+$/,/^[^\.]*\.[^\.]*$/], :convertor => :to_f) add(:matcher => /^\d+[\/\\]\d+[\/\\]\d+$/) { |str| Date.parse(str) } add(:matcher => /^(\d+[\/\\]\d+[\/\\]\d+\s+\d+(?::\d+){1,99})/) do |str,single| m = single.match_obj[1].scan(/\d+/).map { |x| x.to_i } arr = [2,0,1].map { |i| m[i] } arr += m[3..-1].map { |x| x } Time.local(*arr) end add(:matcher => /^(\d+-\d+-\d+\s+\d+(?::\d+){1,99})\s+\-\d+$/) do |str,single| m = single.match_obj[1].scan(/\d+/).map { |x| x.to_i } Time.local(*m) end end |
#each_parser(one_time, &b) ⇒ Object
44 45 46 47 48 49 50 |
# File 'lib/to_parsed_obj.rb', line 44 def each_parser(one_time,&b) one_time.each do |m,c| parser = ToParsedObj::SingleParser.new(:matcher => m, :convertor => c) yield(parser) end parsers.each(&b) end |
#parse(obj, one_time = {}) ⇒ Object
51 52 53 54 55 56 |
# File 'lib/to_parsed_obj.rb', line 51 def parse(obj,one_time={}) each_parser(one_time) do |parser| return parser.parse(obj) if parser.match?(obj) end obj end |