class ABNF::Parser::Rules::Concatenation

Attributes

abnf[R]
rules[R]

Public Class Methods

new(rules, abnf) click to toggle source
# File lib/abnf/parser/rules/concatenation.rb, line 8
def initialize rules, abnf
  @abnf = abnf
  @rules = rules
end

Public Instance Methods

==(other_rule) click to toggle source
# File lib/abnf/parser/rules/concatenation.rb, line 13
def == other_rule
  return false unless other_rule.is_a? self.class
  self.rules == other_rule.rules
end
call(io, rule_list=nil) click to toggle source
# File lib/abnf/parser/rules/concatenation.rb, line 18
def call io, rule_list=nil
  node = Node.concatenation abnf

  match = rules.all? do |rule|
    child = rule.(io, rule_list) or break
    node << child
  end

  if match
    node
  else
    io.seek -node.octets, IO::SEEK_CUR
    nil
  end
end