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



375
376
377
378
379
# File 'lib/atom/xml/parser.rb', line 375

def initialize(name, options = {})
  @name = name.to_s
  @attribute = Atom.to_attrname(name)
  @options = options
end

Instance Attribute Details

#attributeObject (readonly)

:nodoc:



373
374
375
# File 'lib/atom/xml/parser.rb', line 373

def attribute
  @attribute
end

#nameObject (readonly)

:nodoc:



373
374
375
# File 'lib/atom/xml/parser.rb', line 373

def name
  @name
end

#optionsObject (readonly)

:nodoc:



373
374
375
# File 'lib/atom/xml/parser.rb', line 373

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.



384
385
386
387
388
389
390
391
392
393
# File 'lib/atom/xml/parser.rb', line 384

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)


395
396
397
# File 'lib/atom/xml/parser.rb', line 395

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