Class: Parser

Inherits:
FSM
  • Object
show all
Defined in:
lib/netutils/parser.rb

Constant Summary

Constants inherited from FSM

FSM::FSM_S_INIT

Instance Method Summary collapse

Methods inherited from FSM

#cb, #changeto, #state_name

Constructor Details

#initializeParser

Returns a new instance of Parser.



4
5
6
7
# File 'lib/netutils/parser.rb', line 4

def initialize
  super
  @regexp = Array.new
end

Instance Method Details

#add(sname, cb, regexp = nil) ⇒ Object



9
10
11
12
# File 'lib/netutils/parser.rb', line 9

def add(sname, cb, regexp = nil)
  super(sname, cb)
  @regexp.push(regexp)
end

#parse(buf) ⇒ Object



20
21
22
23
24
25
26
27
28
29
# File 'lib/netutils/parser.rb', line 20

def parse(buf)
  buf.each_line do |l|
    unless l.chomp! =~ regexp
      raise(ArgumentError,
          "No match at #{state_name}: \"#{l}\" " +
          "to #{regexp.to_s}")
    end
    send(cb, l, $~)
  end
end

#regexpObject



14
15
16
17
18
# File 'lib/netutils/parser.rb', line 14

def regexp
  r = @regexp[@state]
  r = /^.*$/ if r == nil
  return r
end