class ABNF::Parser::RuleList

Public Class Methods

common() click to toggle source
# File lib/abnf/parser/rule_list.rb, line 58
def self.common
  abnf = Common.to_s
  Compiler.(abnf)
end

Public Instance Methods

==(other_rule_list) click to toggle source
# File lib/abnf/parser/rule_list.rb, line 4
def == other_rule_list
  return false unless other_rule_list.is_a? self.class

  rules == other_rule_list.rules
end
[](rule_name) click to toggle source
# File lib/abnf/parser/rule_list.rb, line 10
def [] rule_name
  rules[rule_name]
end
[]=(rule_name, rule) click to toggle source
# File lib/abnf/parser/rule_list.rb, line 14
def []= rule_name, rule
  rules[rule_name] = rule
end
apply(rule_name, io) click to toggle source
# File lib/abnf/parser/rule_list.rb, line 18
def apply rule_name, io
  rule = fetch rule_name

  call_method = rule.method :call

  io = StringIO.new io if io.is_a? String

  rules[rule_name].(io, self)
end
fetch(rule_name) click to toggle source
# File lib/abnf/parser/rule_list.rb, line 28
def fetch rule_name
  rule = rules[rule_name]

  unless rule
    raise Error.new "Rule not found: #{rule_name.inspect}"
  end

  rule
end
names() click to toggle source
# File lib/abnf/parser/rule_list.rb, line 38
def names
  rules.keys
end
replace(rule_name, regexp, max_octets) click to toggle source
# File lib/abnf/parser/rule_list.rb, line 42
def replace rule_name, regexp, max_octets
  existing_rule = fetch rule_name
  abnf = existing_rule

  rule = Rules::RegexpPattern.new regexp, abnf, max_octets
  rules[rule_name] = rule
end
rules() click to toggle source
# File lib/abnf/parser/rule_list.rb, line 50
def rules
  @rules ||= {}
end
update(additional_rules) click to toggle source
# File lib/abnf/parser/rule_list.rb, line 54
def update additional_rules
  rules.update additional_rules
end