Class: EEML::Environment
- Inherits:
-
Object
- Object
- EEML::Environment
- Defined in:
- lib/eeml/environment.rb
Overview
An EEML environment object. Can contain a number of EEML::Data objects, as well as having other attributes.
Class Method Summary collapse
-
.from_eeml(eeml) ⇒ Object
Create from an EEML document.
Instance Method Summary collapse
-
#<<(value) ⇒ Object
Add an EEML::Data object to the environment.
-
#[](index) ⇒ Object
Access contained EEML::Data objects.
-
#initialize ⇒ Environment
constructor
Create new Environment object.
-
#size ⇒ Object
The number of EEML::Data objects in the environment.
-
#to_eeml ⇒ Object
Convert to EEML.
Constructor Details
#initialize ⇒ Environment
Create new Environment object
12 13 14 |
# File 'lib/eeml/environment.rb', line 12 def initialize @data_items = [] end |
Class Method Details
.from_eeml(eeml) ⇒ Object
Create from an EEML document
17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/eeml/environment.rb', line 17 def self.from_eeml(eeml) # Parse EEML doc = REXML::Document.new(eeml) # Create environment object env = Environment.new # Read data items REXML::XPath.each(doc, "/eeml/environment/data") do |node| env << EEML::Data.new(node.elements['value'].text.to_f) end # Done return env end |
Instance Method Details
#<<(value) ⇒ Object
Add an EEML::Data object to the environment
51 52 53 54 |
# File 'lib/eeml/environment.rb', line 51 def <<(value) raise TypeError.new('Only EEML::Data objects can be added to EEML::Environment objects') unless value.is_a?(EEML::Data) @data_items << value end |
#[](index) ⇒ Object
Access contained EEML::Data objects
62 63 64 |
# File 'lib/eeml/environment.rb', line 62 def [](index) @data_items[index] end |
#size ⇒ Object
The number of EEML::Data objects in the environment
57 58 59 |
# File 'lib/eeml/environment.rb', line 57 def size @data_items.size end |
#to_eeml ⇒ Object
Convert to EEML
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/eeml/environment.rb', line 31 def to_eeml # Check that we have some data items raise EEML::NoData.new('EEML requires at least one data item') if size < 1 # Create EEML eeml = Builder::XmlMarkup.new eeml.instruct! eeml.eeml(:xmlns => "http://www.eeml.org/xsd/005", :'xmlns:xsi' => "http://www.w3.org/2001/XMLSchema-instance", :'xsi:schemaLocation' => "http://www.eeml.org/xsd/005 http://www.eeml.org/xsd/005/005.xsd") do eeml.environment do @data_items.each_index do |i| eeml.data(:id => i) do eeml.value @data_items[i].value end end end end end |