Class: Atom::Xml::Parseable::ParseSpec

Inherits:
Object
  • Object
show all
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

Instance Method Summary collapse

Constructor Details

#initialize(name, options = {}) ⇒ ParseSpec

Returns a new instance of ParseSpec.



330
331
332
333
334
# File 'lib/atom/xml/parser.rb', line 330

def initialize(name, options = {})
  @name = name.to_s
  @attribute = name.to_s.sub(/:/, '_')
  @options = options
end

Instance Attribute Details

#attributeObject (readonly)

:nodoc:



328
329
330
# File 'lib/atom/xml/parser.rb', line 328

def attribute
  @attribute
end

#nameObject (readonly)

:nodoc:



328
329
330
# File 'lib/atom/xml/parser.rb', line 328

def name
  @name
end

#optionsObject (readonly)

:nodoc:



328
329
330
# File 'lib/atom/xml/parser.rb', line 328

def options
  @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.



339
340
341
342
343
344
345
346
347
348
# File 'lib/atom/xml/parser.rb', line 339

def parse(target, xml)
  case options[: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

Returns:

  • (Boolean)


350
351
352
# File 'lib/atom/xml/parser.rb', line 350

def single?
  options[:type] == :single
end