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.



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

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

Instance Attribute Details

#attributeObject (readonly)

:nodoc:



369
370
371
# File 'lib/atom/xml/parser.rb', line 369

def attribute
  @attribute
end

#nameObject (readonly)

:nodoc:



369
370
371
# File 'lib/atom/xml/parser.rb', line 369

def name
  @name
end

#optionsObject (readonly)

:nodoc:



369
370
371
# File 'lib/atom/xml/parser.rb', line 369

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.



380
381
382
383
384
385
386
387
388
389
# File 'lib/atom/xml/parser.rb', line 380

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)


391
392
393
# File 'lib/atom/xml/parser.rb', line 391

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