Module: Xap::Parser::ParseXap
- Defined in:
- lib/xap/parser/parse_xap.rb
Constant Summary collapse
- @@parser =
XapTreetopParser.new
Class Method Summary collapse
-
.parse(data) ⇒ Object
Returns a Treetop node tree for the given xAP message.
-
.simple_parse(data) ⇒ Object
Returns a hash that is equivalent to calling parse(data).to_hash(), but much faster.
Class Method Details
.parse(data) ⇒ Object
Returns a Treetop node tree for the given xAP message
21 22 23 24 25 26 27 28 29 |
# File 'lib/xap/parser/parse_xap.rb', line 21 def self.parse(data) tree = @@parser.parse(data, :root => :message) if !tree raise Exception, "Parse error: #{@@parser.failure_reason.inspect} (index #{@@parser.index})" end tree end |
.simple_parse(data) ⇒ Object
Returns a hash that is equivalent to calling parse(data).to_hash(), but much faster. However, this method does not do any explicit checking for invalid messages or values.
34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/xap/parser/parse_xap.rb', line 34 def self.simple_parse(data) Hash[*data.split(/}\n?/).map {|v| bl = v.split("\n{\n") bl[1] = Hash[*bl[1].to_s.split("\n").map {|v2| pair = v2.split(/[=!]/, 2) pair[1] = [pair[1]].pack 'H*' if v2 =~ /^[^=!]+!/ pair }.flatten!] bl }.flatten!(1)] end |