Class: ESS::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/ess/parser.rb

Class Method Summary collapse

Class Method Details

.parse(data) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/ess/parser.rb', line 6

def self.parse data
  doc = REXML::Document.new data
  ess = doc.root
  if ess.nil?
    raise ArgumentError, "the argument has to contain a valid xml document"
  end
  new_ess = ESS.new
  new_ess.disable_postprocessing
  parse_element(ess, new_ess)
  new_ess.enable_postprocessing
  new_ess
end

.parse_element(element, new_element = nil) ⇒ Object



19
20
21
22
23
24
25
26
27
28
# File 'lib/ess/parser.rb', line 19

def self.parse_element element, new_element=nil
  element.attributes.each_pair do |attr, value|
    new_element.send(attr + "_attr", value)
  end
  element.elements.each do |element|
    new_element.send("add_" + element.name, element.text) do |new_element|
      parse_element element, new_element
    end
  end
end