Method: Wukong::FlatPack.create_parser

Defined in:
lib/wukong/model/flatpack_parser/flat.rb

.create_parser(str, delimiter_width = 0, strict_fixed_point = true) ⇒ Object

Validates the supplied format string and creates a parser from it.



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/wukong/model/flatpack_parser/flat.rb', line 35

def self.create_parser(str, delimiter_width=0, strict_fixed_point=true)
  return nil unless Language.string_in_lang str
  lang = []
  str.match_all(Language::CAPTURE_TOKEN_RE).each do |match|
    token_str = match[0]
    case token_str
    when Language::TOTAL_SIMPLE_TYPE_RE
      lang << simple_token_from_string(token_str, match.begin(0))
    when Language::TOTAL_FIXED_POINT_RE
      lang << fixed_point_token_from_string(token_str, match.begin(0), strict_fixed_point)
    when Language::TOTAL_DATE_RE
      date_match = token_str.match(Language::NAMED_DATE_RE)
      #TODO: Implement
    end
    if delimiter_width != 0
      t = Flat::Tokens::IgnoreToken.new
      t.position = -1
      t.length = delimiter_width
      lang << t
    end
  end
  lang = lang[0..-2] if delimiter_width != 0 #pop off the delimiter on the end
  return Flat::Parser.new(lang)
end