Class: Krikri::Parser::Value
- Inherits:
-
Object
- Object
- Krikri::Parser::Value
- Defined in:
- lib/krikri/parser.rb
Overview
A generic parser value.
Interface to a single value node which can access typed data values (e.g. String, DateTime, etc…) parsed from a string, and provides access to child nodes and attributes.
Direct Known Subclasses
Instance Method Summary collapse
-
#[](name) ⇒ Object
Property accessor interface.
-
#attribute?(name) ⇒ Boolean
Queries whether ‘name` is an attribute of this node.
-
#attributes ⇒ Array<Symbol>
abstract
A list of attributes accessible on the node.
-
#child?(name) ⇒ Boolean
Queries whether ‘name` is a subproperty of this node.
-
#children ⇒ Array<Symbol>
abstract
A list of subproperties that can be passed back to #[] to access child nodes.
- #method_missing(name, *args, &block) ⇒ Object
- #respond_to_missing(method) ⇒ Object
-
#value ⇒ <#to_s>
abstract
Typed value for the property.
-
#values? ⇒ Boolean
abstract
True if this node has typed values accessible with #values.
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(name, *args, &block) ⇒ Object
97 98 99 100 |
# File 'lib/krikri/parser.rb', line 97 def method_missing(name, *args, &block) return attribute(name) if attribute?(name) super end |
Instance Method Details
#[](name) ⇒ Object
Property accessor interface. Passes ‘name` to the local implementation of #get_child_nodes.
43 44 45 |
# File 'lib/krikri/parser.rb', line 43 def [](name) get_child_nodes(name) end |
#attribute?(name) ⇒ Boolean
Queries whether ‘name` is an attribute of this node
89 90 91 92 93 94 95 |
# File 'lib/krikri/parser.rb', line 89 def attribute?(name) begin attributes.include?(name) rescue NotImplementedError false end end |
#attributes ⇒ Array<Symbol>
Returns a list of attributes accessible on the node.
81 82 83 |
# File 'lib/krikri/parser.rb', line 81 def attributes raise NotImplementedError end |
#child?(name) ⇒ Boolean
Queries whether ‘name` is a subproperty of this node
51 52 53 |
# File 'lib/krikri/parser.rb', line 51 def child?(name) children.include?(name) end |
#children ⇒ Array<Symbol>
Returns a list of subproperties that can be passed back to #[] to access child nodes.
59 60 61 |
# File 'lib/krikri/parser.rb', line 59 def children raise NotImplementedError end |
#respond_to_missing(method) ⇒ Object
102 103 104 |
# File 'lib/krikri/parser.rb', line 102 def respond_to_missing(method, *) attribute?(method) || super end |
#value ⇒ <#to_s>
Returns typed value for the property.
66 67 68 |
# File 'lib/krikri/parser.rb', line 66 def value raise NotImplementedError end |
#values? ⇒ Boolean
Returns true if this node has typed values accessible with #values.
74 75 76 |
# File 'lib/krikri/parser.rb', line 74 def values? raise NotImplementedError end |