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.
261 262 263 264 265 |
# File 'lib/atom/xml/parser.rb', line 261 def initialize(name, = {}) @name = name.to_s @attribute = name.to_s.sub(/:/, '_') @options = end |
Instance Attribute Details
#attribute ⇒ Object (readonly)
:nodoc:
259 260 261 |
# File 'lib/atom/xml/parser.rb', line 259 def attribute @attribute end |
#name ⇒ Object (readonly)
:nodoc:
259 260 261 |
# File 'lib/atom/xml/parser.rb', line 259 def name @name end |
#options ⇒ Object (readonly)
:nodoc:
259 260 261 |
# File 'lib/atom/xml/parser.rb', line 259 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.
270 271 272 273 274 275 276 277 |
# File 'lib/atom/xml/parser.rb', line 270 def parse(target, xml) case [:type] when :single target.send("#{@attribute}=".to_sym, build(target, xml)) when :collection target.send("#{@attribute}") << build(target, xml) end end |
#single? ⇒ Boolean
279 280 281 |
# File 'lib/atom/xml/parser.rb', line 279 def single? [:type] == :single end |