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.
367 368 369 370 371 |
# File 'lib/atom/xml/parser.rb', line 367 def initialize(name, = {}) @name = name.to_s @attribute = Atom.to_attrname(name) @options = end |
Instance Attribute Details
#attribute ⇒ Object (readonly)
:nodoc:
365 366 367 |
# File 'lib/atom/xml/parser.rb', line 365 def attribute @attribute end |
#name ⇒ Object (readonly)
:nodoc:
365 366 367 |
# File 'lib/atom/xml/parser.rb', line 365 def name @name end |
#options ⇒ Object (readonly)
:nodoc:
365 366 367 |
# File 'lib/atom/xml/parser.rb', line 365 def @options 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.
376 377 378 379 380 381 382 383 384 385 |
# File 'lib/atom/xml/parser.rb', line 376 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
387 388 389 |
# File 'lib/atom/xml/parser.rb', line 387 def single? [:type] == :single end |