Class: Atom::Xml::Parseable::ParseSpec
- Inherits:
-
Object
- Object
- Atom::Xml::Parseable::ParseSpec
- Defined in:
- lib/atom/xml/parser.rb
Overview
Contains the specification for how an element should be parsed.
This should not need to be constructed directly, instead use the element and elements macros in the declaration of the class.
See Parseable.
Instance Attribute Summary collapse
-
#attribute ⇒ Object
readonly
:nodoc:.
-
#name ⇒ Object
readonly
:nodoc:.
-
#options ⇒ Object
readonly
:nodoc:.
Instance Method Summary collapse
-
#initialize(name, options = {}) ⇒ ParseSpec
constructor
A new instance of ParseSpec.
-
#parse(target, xml) ⇒ Object
Parses a chunk of XML according the specification.
- #single? ⇒ Boolean
Constructor Details
#initialize(name, options = {}) ⇒ ParseSpec
Returns a new instance of ParseSpec.
371 372 373 374 375 |
# File 'lib/atom/xml/parser.rb', line 371 def initialize(name, = {}) @name = name.to_s @attribute = Atom.to_attrname(name) = end |
Instance Attribute Details
#attribute ⇒ Object (readonly)
:nodoc:
369 370 371 |
# File 'lib/atom/xml/parser.rb', line 369 def attribute @attribute end |
#name ⇒ Object (readonly)
:nodoc:
369 370 371 |
# File 'lib/atom/xml/parser.rb', line 369 def name @name end |
#options ⇒ Object (readonly)
:nodoc:
369 370 371 |
# File 'lib/atom/xml/parser.rb', line 369 def end |
Instance Method Details
#parse(target, xml) ⇒ Object
Parses a chunk of XML according the specification. The data extracted will be assigned to the target object.
380 381 382 383 384 385 386 387 388 389 |
# File 'lib/atom/xml/parser.rb', line 380 def parse(target, xml) case [:type] when :single target.send("#{@attribute}=".to_sym, build(target, xml)) when :collection collection = target.send(@attribute.to_s) element = build(target, xml) collection << element end end |
#single? ⇒ Boolean
391 392 393 |
# File 'lib/atom/xml/parser.rb', line 391 def single? [:type] == :single end |