Class: ABNF::Parser::RuleList
- Inherits:
-
Object
- Object
- ABNF::Parser::RuleList
- Defined in:
- lib/abnf/parser/rule_list.rb
Class Method Summary collapse
Instance Method Summary collapse
- #==(other_rule_list) ⇒ Object
- #[](rule_name) ⇒ Object
- #[]=(rule_name, rule) ⇒ Object
- #apply(rule_name, io) ⇒ Object
- #fetch(rule_name) ⇒ Object
- #names ⇒ Object
- #replace(rule_name, regexp, max_octets) ⇒ Object
- #rules ⇒ Object
- #update(additional_rules) ⇒ Object
Class Method Details
Instance Method Details
#==(other_rule_list) ⇒ Object
4 5 6 7 8 |
# 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) ⇒ Object
10 11 12 |
# File 'lib/abnf/parser/rule_list.rb', line 10 def [] rule_name rules[rule_name] end |
#[]=(rule_name, rule) ⇒ Object
14 15 16 |
# File 'lib/abnf/parser/rule_list.rb', line 14 def []= rule_name, rule rules[rule_name] = rule end |
#apply(rule_name, io) ⇒ Object
18 19 20 21 22 23 24 25 26 |
# 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) ⇒ Object
28 29 30 31 32 33 34 35 36 |
# 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 ⇒ Object
38 39 40 |
# File 'lib/abnf/parser/rule_list.rb', line 38 def names rules.keys end |
#replace(rule_name, regexp, max_octets) ⇒ Object
42 43 44 45 46 47 48 |
# 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 ⇒ Object
50 51 52 |
# File 'lib/abnf/parser/rule_list.rb', line 50 def rules @rules ||= {} end |
#update(additional_rules) ⇒ Object
54 55 56 |
# File 'lib/abnf/parser/rule_list.rb', line 54 def update additional_rules rules.update additional_rules end |