eeml 0.0.18 → 0.0.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +18 -0
 - data/Rakefile +1 -1
 - data/lib/eeml/environment.rb +2 -0
 - data/lib/eeml/json_environment_parser_v100.rb +2 -0
 - data/lib/eeml/json_output.rb +2 -1
 - data/lib/eeml/libxml_eeml_output_v051.rb +6 -0
 - data/lib/eeml/libxml_eeml_parser_v005.rb +1 -1
 - data/lib/eeml/libxml_eeml_parser_v051.rb +5 -1
 - data/lib/eeml.rb +1 -1
 - data/schemas/eeml/0.5.1.xsd +159 -0
 - data/schemas/eeml/005.xsd +1 -1
 - data/test/data/doc_1_non_private.json +31 -0
 - data/test/data/doc_1_non_private.xml +33 -0
 - data/test/data/doc_1_v6_non_private.json +31 -0
 - data/test/data/environment_tags.json +41 -0
 - data/test/data/environment_tags.xml +14 -0
 - data/test/test_environment.rb +35 -0
 - metadata +12 -5
 
    
        data/CHANGELOG
    CHANGED
    
    | 
         @@ -1,3 +1,21 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            commit 4c88cb1fe13661dbba20fca4877491c54a265a2a
         
     | 
| 
      
 2 
     | 
    
         
            +
            Author: Paul Bellamy <paul@connectedenvironments.com>
         
     | 
| 
      
 3 
     | 
    
         
            +
            Date:   Fri Aug 20 19:12:34 2010 +0100
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
                Version 0.0.20
         
     | 
| 
      
 6 
     | 
    
         
            +
                
         
     | 
| 
      
 7 
     | 
    
         
            +
                  Added environment level tagging to xml v0.5.1 and json v1.0.0
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            commit 927d8b9ec12bdf277953f591301d01dc4bcfe9d9
         
     | 
| 
      
 10 
     | 
    
         
            +
            Author: Paul Bellamy <paul@connectedenvironments.com>
         
     | 
| 
      
 11 
     | 
    
         
            +
            Date:   Wed Aug 18 11:41:12 2010 +0100
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
              Version 0.0.19
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                Fix for parsing private boolean values
         
     | 
| 
      
 16 
     | 
    
         
            +
              
         
     | 
| 
      
 17 
     | 
    
         
            +
                  Was just returning a string (always true), so now compares with == "true"
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
       1 
19 
     | 
    
         
             
            commit 9835edb290ef16b274d9ab59e3c6adca2ce97fcf
         
     | 
| 
       2 
20 
     | 
    
         
             
            Author: Levent Ali <lebreeze@gmail.com>
         
     | 
| 
       3 
21 
     | 
    
         
             
            Date:   Wed Jul 7 18:48:34 2010 +0100
         
     | 
    
        data/Rakefile
    CHANGED
    
    | 
         @@ -10,7 +10,7 @@ begin 
     | 
|
| 
       10 
10 
     | 
    
         
             
                gem.summary = "Simple little library for programmatically manipulating EEML documents."
         
     | 
| 
       11 
11 
     | 
    
         
             
                gem.description = "Simple little library for programmatically manipulating EEML documents, in particular this library is designed to work with the Pachube web service."
         
     | 
| 
       12 
12 
     | 
    
         
             
                gem.email = "sam.mulube@gmail.com"
         
     | 
| 
       13 
     | 
    
         
            -
                gem.authors = ["Neill Bogie", "Sam Mulube", "Levent Ali"]
         
     | 
| 
      
 13 
     | 
    
         
            +
                gem.authors = ["Neill Bogie", "Sam Mulube", "Levent Ali", "Paul Bellamy"]
         
     | 
| 
       14 
14 
     | 
    
         
             
                gem.version = Eeml::VERSION
         
     | 
| 
       15 
15 
     | 
    
         
             
                gem.add_dependency("libxml-ruby", ">=1.1.3")
         
     | 
| 
       16 
16 
     | 
    
         
             
                gem.add_dependency("json", ">=1.4.3")
         
     | 
    
        data/lib/eeml/environment.rb
    CHANGED
    
    | 
         @@ -100,6 +100,7 @@ module Eeml 
     | 
|
| 
       100 
100 
     | 
    
         
             
                attr_accessor :title, :description, :feed_url, :website, :email, :icon, :status
         
     | 
| 
       101 
101 
     | 
    
         
             
                attr_accessor :location
         
     | 
| 
       102 
102 
     | 
    
         
             
                attr_accessor :datastreams
         
     | 
| 
      
 103 
     | 
    
         
            +
                attr_accessor :tags
         
     | 
| 
       103 
104 
     | 
    
         
             
                attr_writer :private
         
     | 
| 
       104 
105 
     | 
    
         | 
| 
       105 
106 
     | 
    
         
             
                # Create a new Environment object by passing parameters in a hash (just like creating an ActiveRecord object)
         
     | 
| 
         @@ -115,6 +116,7 @@ module Eeml 
     | 
|
| 
       115 
116 
     | 
    
         
             
                  @email = options[:email]
         
     | 
| 
       116 
117 
     | 
    
         
             
                  @icon = options[:icon]
         
     | 
| 
       117 
118 
     | 
    
         
             
                  @private = options[:private]
         
     | 
| 
      
 119 
     | 
    
         
            +
                  @tags = []
         
     | 
| 
       118 
120 
     | 
    
         
             
                end
         
     | 
| 
       119 
121 
     | 
    
         | 
| 
       120 
122 
     | 
    
         
             
                def add_datastream(datastream)
         
     | 
| 
         @@ -16,6 +16,8 @@ module Eeml 
     | 
|
| 
       16 
16 
     | 
    
         | 
| 
       17 
17 
     | 
    
         
             
                  env.updated = Time.gm(*ParseDate.parsedate(env_hash['updated'])) unless env_hash['updated'].nil?
         
     | 
| 
       18 
18 
     | 
    
         | 
| 
      
 19 
     | 
    
         
            +
                  env.tags = env_hash['tags'] unless env_hash['tags'].nil?
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
       19 
21 
     | 
    
         
             
                  env.location = buildLocation(env_hash)
         
     | 
| 
       20 
22 
     | 
    
         | 
| 
       21 
23 
     | 
    
         
             
                  env.datastreams = buildDatastreams(env_hash)
         
     | 
    
        data/lib/eeml/json_output.rb
    CHANGED
    
    | 
         @@ -16,7 +16,8 @@ module Eeml 
     | 
|
| 
       16 
16 
     | 
    
         
             
                                       :website => environment.website,
         
     | 
| 
       17 
17 
     | 
    
         
             
                                       :email => environment.email,
         
     | 
| 
       18 
18 
     | 
    
         
             
                                       :icon => environment.icon,
         
     | 
| 
       19 
     | 
    
         
            -
                                       :version => EEML['0.5.0'][:version] 
     | 
| 
      
 19 
     | 
    
         
            +
                                       :version => EEML['0.5.0'][:version],
         
     | 
| 
      
 20 
     | 
    
         
            +
                                       :tags => environment.tags }
         
     | 
| 
       20 
21 
     | 
    
         | 
| 
       21 
22 
     | 
    
         
             
                  environment_hash[:updated] = environment.updated.utc.iso8601 unless environment.updated.nil?  #TODO: was retrieved_at
         
     | 
| 
       22 
23 
     | 
    
         | 
| 
         @@ -59,6 +59,12 @@ module Eeml 
     | 
|
| 
       59 
59 
     | 
    
         
             
                    email_node << environment.email
         
     | 
| 
       60 
60 
     | 
    
         
             
                  end
         
     | 
| 
       61 
61 
     | 
    
         | 
| 
      
 62 
     | 
    
         
            +
                  environment.tags.each do |tag|
         
     | 
| 
      
 63 
     | 
    
         
            +
                    tag_node = XML::Node.new('tag')
         
     | 
| 
      
 64 
     | 
    
         
            +
                    tag_node << tag
         
     | 
| 
      
 65 
     | 
    
         
            +
                    datastream_node << tag_node
         
     | 
| 
      
 66 
     | 
    
         
            +
                  end
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
       62 
68 
     | 
    
         
             
                  unless environment.location.nil?
         
     | 
| 
       63 
69 
     | 
    
         
             
                    environment_node << location_node = XML::Node.new('location')
         
     | 
| 
       64 
70 
     | 
    
         
             
                    location_node['domain'] = environment.location.domain
         
     | 
| 
         @@ -79,7 +79,7 @@ module Eeml 
     | 
|
| 
       79 
79 
     | 
    
         
             
                  env.status      = optional_content(env_node, 'x:status', 'status', "x:#{@@eeml_version[:href]}")
         
     | 
| 
       80 
80 
     | 
    
         
             
                  env.email       = optional_content(env_node, 'x:email', 'email', "x:#{@@eeml_version[:href]}")
         
     | 
| 
       81 
81 
     | 
    
         
             
                  env.icon        = optional_content(env_node, 'x:icon', 'icon', "x:#{@@eeml_version[:href]}")
         
     | 
| 
       82 
     | 
    
         
            -
                  env.private     = optional_content(env_node, 'x:private', 'private', "x:#{@@eeml_version[:href]}")
         
     | 
| 
      
 82 
     | 
    
         
            +
                  env.private     = (optional_content(env_node, 'x:private', 'private', "x:#{@@eeml_version[:href]}") == "true")
         
     | 
| 
       83 
83 
     | 
    
         | 
| 
       84 
84 
     | 
    
         
             
                  #find_first_node_or_fail(env_node, 'x:location', 'location')
         
     | 
| 
       85 
85 
     | 
    
         
             
                  loc_node = env_node.find_first('x:location', "x:#{@@eeml_version[:href]}")
         
     | 
| 
         @@ -79,12 +79,16 @@ module Eeml 
     | 
|
| 
       79 
79 
     | 
    
         
             
                  env.status      = optional_content(env_node, 'x:status', 'status', "x:#{@@eeml_version[:href]}")
         
     | 
| 
       80 
80 
     | 
    
         
             
                  env.email       = optional_content(env_node, 'x:email', 'email', "x:#{@@eeml_version[:href]}")
         
     | 
| 
       81 
81 
     | 
    
         
             
                  env.icon        = optional_content(env_node, 'x:icon', 'icon', "x:#{@@eeml_version[:href]}")
         
     | 
| 
       82 
     | 
    
         
            -
                  env.private     = optional_content(env_node, 'x:private', 'private', "x:#{@@eeml_version[:href]}")
         
     | 
| 
      
 82 
     | 
    
         
            +
                  env.private     = (optional_content(env_node, 'x:private', 'private', "x:#{@@eeml_version[:href]}") == "true")
         
     | 
| 
       83 
83 
     | 
    
         | 
| 
       84 
84 
     | 
    
         
             
                  #find_first_node_or_fail(env_node, 'x:location', 'location')
         
     | 
| 
       85 
85 
     | 
    
         
             
                  loc_node = env_node.find_first('x:location', "x:#{@@eeml_version[:href]}")
         
     | 
| 
       86 
86 
     | 
    
         
             
                  env.location    = extractLocation(loc_node) if loc_node
         
     | 
| 
       87 
87 
     | 
    
         | 
| 
      
 88 
     | 
    
         
            +
                  env_node.find('x:tag', "x:#{@@eeml_version[:href]}").each do |tag_node|
         
     | 
| 
      
 89 
     | 
    
         
            +
                    env.tags << tag_node.content.strip
         
     | 
| 
      
 90 
     | 
    
         
            +
                  end
         
     | 
| 
      
 91 
     | 
    
         
            +
             
     | 
| 
       88 
92 
     | 
    
         
             
                  datastream_nodes = env_node.find('x:data', "x:#{@@eeml_version[:href]}")
         
     | 
| 
       89 
93 
     | 
    
         
             
                  # raise NoDataStreams.new, "no datastreams found"  if datastream_nodes.empty?
         
     | 
| 
       90 
94 
     | 
    
         
             
                  env.datastreams = extractDataStreams(datastream_nodes) unless datastream_nodes.empty?
         
     | 
    
        data/lib/eeml.rb
    CHANGED
    
    
| 
         @@ -0,0 +1,159 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <?xml version="1.0" encoding="iso-8859-1"?>
         
     | 
| 
      
 2 
     | 
    
         
            +
            <xsd:schema xmlns="http://www.eeml.org/xsd/0.5.1" elementFormDefault="qualified" targetNamespace="http://www.eeml.org/xsd/0.5.1" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
         
     | 
| 
      
 3 
     | 
    
         
            +
              <xsd:element name="eeml">
         
     | 
| 
      
 4 
     | 
    
         
            +
                <xsd:complexType>
         
     | 
| 
      
 5 
     | 
    
         
            +
                  <xsd:choice>
         
     | 
| 
      
 6 
     | 
    
         
            +
                    <xsd:element maxOccurs="unbounded" name="environment">
         
     | 
| 
      
 7 
     | 
    
         
            +
                      <xsd:complexType>         
         
     | 
| 
      
 8 
     | 
    
         
            +
                        <xsd:sequence>
         
     | 
| 
      
 9 
     | 
    
         
            +
                          <xsd:element minOccurs="0" name="title" type="xsd:string" />
         
     | 
| 
      
 10 
     | 
    
         
            +
                          <xsd:element minOccurs="0" name="feed" type="xsd:anyURI" />
         
     | 
| 
      
 11 
     | 
    
         
            +
                          <xsd:element minOccurs="0" name="status">
         
     | 
| 
      
 12 
     | 
    
         
            +
                            <xsd:simpleType>
         
     | 
| 
      
 13 
     | 
    
         
            +
                              <xsd:restriction base="xsd:string">
         
     | 
| 
      
 14 
     | 
    
         
            +
                                <xsd:enumeration value="frozen" />
         
     | 
| 
      
 15 
     | 
    
         
            +
                                <xsd:enumeration value="live" />
         
     | 
| 
      
 16 
     | 
    
         
            +
                              </xsd:restriction>
         
     | 
| 
      
 17 
     | 
    
         
            +
                            </xsd:simpleType>
         
     | 
| 
      
 18 
     | 
    
         
            +
                          </xsd:element>
         
     | 
| 
      
 19 
     | 
    
         
            +
                          <xsd:element minOccurs="0" name="private">
         
     | 
| 
      
 20 
     | 
    
         
            +
                            <xsd:simpleType>
         
     | 
| 
      
 21 
     | 
    
         
            +
                              <xsd:restriction base="xsd:string">
         
     | 
| 
      
 22 
     | 
    
         
            +
                                <xsd:enumeration value="true" />
         
     | 
| 
      
 23 
     | 
    
         
            +
                                <xsd:enumeration value="false" />
         
     | 
| 
      
 24 
     | 
    
         
            +
                              </xsd:restriction>
         
     | 
| 
      
 25 
     | 
    
         
            +
                            </xsd:simpleType>
         
     | 
| 
      
 26 
     | 
    
         
            +
                          </xsd:element>
         
     | 
| 
      
 27 
     | 
    
         
            +
                          <xsd:element minOccurs="0" name="description" type="xsd:string" />
         
     | 
| 
      
 28 
     | 
    
         
            +
                          <xsd:element minOccurs="0" name="icon" type="xsd:anyURI" />
         
     | 
| 
      
 29 
     | 
    
         
            +
                          <xsd:element minOccurs="0" name="website" type="xsd:anyURI" />
         
     | 
| 
      
 30 
     | 
    
         
            +
                          <xsd:element minOccurs="0" name="email" type="xsd:string" />
         
     | 
| 
      
 31 
     | 
    
         
            +
                          <xsd:element minOccurs="0" maxOccurs="unbounded" name="tag" type="xsd:string" />
         
     | 
| 
      
 32 
     | 
    
         
            +
                          <xsd:element minOccurs="0" name="location">
         
     | 
| 
      
 33 
     | 
    
         
            +
                            <xsd:complexType>
         
     | 
| 
      
 34 
     | 
    
         
            +
                              <xsd:sequence>
         
     | 
| 
      
 35 
     | 
    
         
            +
                                <xsd:element minOccurs="0" name="name" type="xsd:string" />
         
     | 
| 
      
 36 
     | 
    
         
            +
                                <xsd:element name="lat">
         
     | 
| 
      
 37 
     | 
    
         
            +
                                  <xsd:simpleType>
         
     | 
| 
      
 38 
     | 
    
         
            +
                                    <xsd:restriction base="xsd:double">
         
     | 
| 
      
 39 
     | 
    
         
            +
                                      <xsd:minInclusive value="-90" />
         
     | 
| 
      
 40 
     | 
    
         
            +
                                      <xsd:maxInclusive value="90" />
         
     | 
| 
      
 41 
     | 
    
         
            +
                                    </xsd:restriction>
         
     | 
| 
      
 42 
     | 
    
         
            +
                                  </xsd:simpleType>
         
     | 
| 
      
 43 
     | 
    
         
            +
                                </xsd:element>
         
     | 
| 
      
 44 
     | 
    
         
            +
                                <xsd:element name="lon">
         
     | 
| 
      
 45 
     | 
    
         
            +
                                  <xsd:simpleType>
         
     | 
| 
      
 46 
     | 
    
         
            +
                                    <xsd:restriction base="xsd:double">
         
     | 
| 
      
 47 
     | 
    
         
            +
                                      <xsd:minInclusive value="-180" />
         
     | 
| 
      
 48 
     | 
    
         
            +
                                      <xsd:maxInclusive value="180" />
         
     | 
| 
      
 49 
     | 
    
         
            +
                                    </xsd:restriction>
         
     | 
| 
      
 50 
     | 
    
         
            +
                                  </xsd:simpleType>
         
     | 
| 
      
 51 
     | 
    
         
            +
                                </xsd:element>
         
     | 
| 
      
 52 
     | 
    
         
            +
                                <xsd:element minOccurs="0" maxOccurs="1" name="ele" type="xsd:double" />
         
     | 
| 
      
 53 
     | 
    
         
            +
                              </xsd:sequence>
         
     | 
| 
      
 54 
     | 
    
         
            +
                              <xsd:attribute name="exposure" use="optional">
         
     | 
| 
      
 55 
     | 
    
         
            +
                                <xsd:simpleType>
         
     | 
| 
      
 56 
     | 
    
         
            +
                                  <xsd:restriction base="xsd:string">
         
     | 
| 
      
 57 
     | 
    
         
            +
                                    <xsd:enumeration value="indoor" />
         
     | 
| 
      
 58 
     | 
    
         
            +
                                    <xsd:enumeration value="outdoor" />
         
     | 
| 
      
 59 
     | 
    
         
            +
                                  </xsd:restriction>
         
     | 
| 
      
 60 
     | 
    
         
            +
                                </xsd:simpleType>
         
     | 
| 
      
 61 
     | 
    
         
            +
                              </xsd:attribute>
         
     | 
| 
      
 62 
     | 
    
         
            +
                              <xsd:attribute name="domain" use="required">
         
     | 
| 
      
 63 
     | 
    
         
            +
                                <xsd:simpleType>
         
     | 
| 
      
 64 
     | 
    
         
            +
                                  <xsd:restriction base="xsd:string">
         
     | 
| 
      
 65 
     | 
    
         
            +
                                    <xsd:enumeration value="physical" />
         
     | 
| 
      
 66 
     | 
    
         
            +
                                    <xsd:enumeration value="virtual" />
         
     | 
| 
      
 67 
     | 
    
         
            +
                                  </xsd:restriction>
         
     | 
| 
      
 68 
     | 
    
         
            +
                                </xsd:simpleType>
         
     | 
| 
      
 69 
     | 
    
         
            +
                              </xsd:attribute>
         
     | 
| 
      
 70 
     | 
    
         
            +
                              <xsd:attribute name="disposition" use="optional">
         
     | 
| 
      
 71 
     | 
    
         
            +
                                <xsd:simpleType>
         
     | 
| 
      
 72 
     | 
    
         
            +
                                  <xsd:restriction base="xsd:string">
         
     | 
| 
      
 73 
     | 
    
         
            +
                                    <xsd:enumeration value="fixed" />
         
     | 
| 
      
 74 
     | 
    
         
            +
                                    <xsd:enumeration value="mobile" />
         
     | 
| 
      
 75 
     | 
    
         
            +
                                  </xsd:restriction>
         
     | 
| 
      
 76 
     | 
    
         
            +
                                </xsd:simpleType>
         
     | 
| 
      
 77 
     | 
    
         
            +
                              </xsd:attribute>
         
     | 
| 
      
 78 
     | 
    
         
            +
                            </xsd:complexType>
         
     | 
| 
      
 79 
     | 
    
         
            +
                          </xsd:element>            
         
     | 
| 
      
 80 
     | 
    
         
            +
                          <xsd:element minOccurs="1" maxOccurs="unbounded" name="data">
         
     | 
| 
      
 81 
     | 
    
         
            +
                            <xsd:complexType>
         
     | 
| 
      
 82 
     | 
    
         
            +
                              <xsd:sequence>
         
     | 
| 
      
 83 
     | 
    
         
            +
                                <xsd:element minOccurs="0" maxOccurs="unbounded" name="tag" type="xsd:string" />
         
     | 
| 
      
 84 
     | 
    
         
            +
                                <xsd:element name="current_value">
         
     | 
| 
      
 85 
     | 
    
         
            +
                                  <xsd:complexType>
         
     | 
| 
      
 86 
     | 
    
         
            +
                                    <xsd:simpleContent>
         
     | 
| 
      
 87 
     | 
    
         
            +
                                      <xsd:extension base="xsd:string">
         
     | 
| 
      
 88 
     | 
    
         
            +
                                        <xsd:attribute name="at" type="xsd:dateTime" use="optional" />
         
     | 
| 
      
 89 
     | 
    
         
            +
                                      </xsd:extension>
         
     | 
| 
      
 90 
     | 
    
         
            +
                                    </xsd:simpleContent>
         
     | 
| 
      
 91 
     | 
    
         
            +
                                  </xsd:complexType>
         
     | 
| 
      
 92 
     | 
    
         
            +
                                </xsd:element>
         
     | 
| 
      
 93 
     | 
    
         
            +
                                <xsd:element minOccurs="0" maxOccurs="1" name="max_value" type="xsd:string" />
         
     | 
| 
      
 94 
     | 
    
         
            +
                                <xsd:element minOccurs="0" maxOccurs="1" name="min_value" type="xsd:string" />
         
     | 
| 
      
 95 
     | 
    
         
            +
                                <xsd:element minOccurs="0" maxOccurs="1" name="datapoints">
         
     | 
| 
      
 96 
     | 
    
         
            +
                                  <xsd:complexType>
         
     | 
| 
      
 97 
     | 
    
         
            +
                                    <xsd:sequence>
         
     | 
| 
      
 98 
     | 
    
         
            +
                                      <xsd:element minOccurs="0" maxOccurs="unbounded" name="value">
         
     | 
| 
      
 99 
     | 
    
         
            +
                                        <xsd:complexType>
         
     | 
| 
      
 100 
     | 
    
         
            +
                                          <xsd:simpleContent>
         
     | 
| 
      
 101 
     | 
    
         
            +
                                            <xsd:extension base="xsd:string">
         
     | 
| 
      
 102 
     | 
    
         
            +
                                              <xsd:attribute name="at" type="xsd:dateTime" use="optional" />
         
     | 
| 
      
 103 
     | 
    
         
            +
                                            </xsd:extension>
         
     | 
| 
      
 104 
     | 
    
         
            +
                                          </xsd:simpleContent>
         
     | 
| 
      
 105 
     | 
    
         
            +
                                        </xsd:complexType>
         
     | 
| 
      
 106 
     | 
    
         
            +
                                      </xsd:element>
         
     | 
| 
      
 107 
     | 
    
         
            +
                                    </xsd:sequence>
         
     | 
| 
      
 108 
     | 
    
         
            +
                                  </xsd:complexType>
         
     | 
| 
      
 109 
     | 
    
         
            +
                                </xsd:element>
         
     | 
| 
      
 110 
     | 
    
         
            +
                                <xsd:element minOccurs="0" maxOccurs="1" name="unit">
         
     | 
| 
      
 111 
     | 
    
         
            +
                                  <xsd:complexType>
         
     | 
| 
      
 112 
     | 
    
         
            +
                                    <xsd:simpleContent>
         
     | 
| 
      
 113 
     | 
    
         
            +
                                      <xsd:extension base="xsd:string">
         
     | 
| 
      
 114 
     | 
    
         
            +
                                        <xsd:attribute name="symbol" type="xsd:string" use="optional">
         
     | 
| 
      
 115 
     | 
    
         
            +
                                        </xsd:attribute>
         
     | 
| 
      
 116 
     | 
    
         
            +
                                        <xsd:attribute name="type" use="optional">
         
     | 
| 
      
 117 
     | 
    
         
            +
                                          <xsd:simpleType>
         
     | 
| 
      
 118 
     | 
    
         
            +
                                            <xsd:restriction base="xsd:string">
         
     | 
| 
      
 119 
     | 
    
         
            +
                                              <xsd:enumeration value="basicSI" />
         
     | 
| 
      
 120 
     | 
    
         
            +
                                              <xsd:enumeration value="derivedSI" />
         
     | 
| 
      
 121 
     | 
    
         
            +
                                              <xsd:enumeration value="conversionBasedUnits" />
         
     | 
| 
      
 122 
     | 
    
         
            +
                                              <xsd:enumeration value="derivedUnits" />
         
     | 
| 
      
 123 
     | 
    
         
            +
                                              <xsd:enumeration value="contextDependentUnits" />
         
     | 
| 
      
 124 
     | 
    
         
            +
                                            </xsd:restriction>
         
     | 
| 
      
 125 
     | 
    
         
            +
                                          </xsd:simpleType>
         
     | 
| 
      
 126 
     | 
    
         
            +
                                        </xsd:attribute>
         
     | 
| 
      
 127 
     | 
    
         
            +
                                      </xsd:extension>
         
     | 
| 
      
 128 
     | 
    
         
            +
                                    </xsd:simpleContent>
         
     | 
| 
      
 129 
     | 
    
         
            +
                                  </xsd:complexType>
         
     | 
| 
      
 130 
     | 
    
         
            +
                                </xsd:element>
         
     | 
| 
      
 131 
     | 
    
         
            +
                              </xsd:sequence>
         
     | 
| 
      
 132 
     | 
    
         
            +
                              <xsd:attribute name="id" type="xsd:nonNegativeInteger" use="required" />
         
     | 
| 
      
 133 
     | 
    
         
            +
                            </xsd:complexType>
         
     | 
| 
      
 134 
     | 
    
         
            +
                          </xsd:element>
         
     | 
| 
      
 135 
     | 
    
         
            +
                         </xsd:sequence>            
         
     | 
| 
      
 136 
     | 
    
         
            +
                        <xsd:attribute name="updated" use="optional">
         
     | 
| 
      
 137 
     | 
    
         
            +
                          <xsd:simpleType>
         
     | 
| 
      
 138 
     | 
    
         
            +
                            <xsd:restriction base="xsd:dateTime" />
         
     | 
| 
      
 139 
     | 
    
         
            +
                          </xsd:simpleType>
         
     | 
| 
      
 140 
     | 
    
         
            +
                        </xsd:attribute>
         
     | 
| 
      
 141 
     | 
    
         
            +
                        <xsd:attribute name="creator" use="optional">
         
     | 
| 
      
 142 
     | 
    
         
            +
                          <xsd:simpleType>
         
     | 
| 
      
 143 
     | 
    
         
            +
                            <xsd:restriction base="xsd:string" />
         
     | 
| 
      
 144 
     | 
    
         
            +
                          </xsd:simpleType>
         
     | 
| 
      
 145 
     | 
    
         
            +
                        </xsd:attribute>
         
     | 
| 
      
 146 
     | 
    
         
            +
                        <xsd:attribute name="id" type="xsd:nonNegativeInteger" use="optional" />
         
     | 
| 
      
 147 
     | 
    
         
            +
                      </xsd:complexType>
         
     | 
| 
      
 148 
     | 
    
         
            +
                    </xsd:element>
         
     | 
| 
      
 149 
     | 
    
         
            +
                  </xsd:choice>
         
     | 
| 
      
 150 
     | 
    
         
            +
                  <xsd:attribute name="version" use="optional">
         
     | 
| 
      
 151 
     | 
    
         
            +
                    <xsd:simpleType>
         
     | 
| 
      
 152 
     | 
    
         
            +
                      <xsd:restriction base="xsd:string">            
         
     | 
| 
      
 153 
     | 
    
         
            +
                        <xsd:enumeration value="0.5.1" />
         
     | 
| 
      
 154 
     | 
    
         
            +
                      </xsd:restriction>
         
     | 
| 
      
 155 
     | 
    
         
            +
                    </xsd:simpleType>
         
     | 
| 
      
 156 
     | 
    
         
            +
                  </xsd:attribute>
         
     | 
| 
      
 157 
     | 
    
         
            +
                </xsd:complexType>
         
     | 
| 
      
 158 
     | 
    
         
            +
              </xsd:element>
         
     | 
| 
      
 159 
     | 
    
         
            +
            </xsd:schema>
         
     | 
    
        data/schemas/eeml/005.xsd
    CHANGED
    
    
| 
         @@ -0,0 +1,31 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            {"datastreams":[
         
     | 
| 
      
 2 
     | 
    
         
            +
              {"tags":["tagD0"],
         
     | 
| 
      
 3 
     | 
    
         
            +
              "value":{"current_value":"0","min_value":"-9999.0","max_value":"1022.0"},
         
     | 
| 
      
 4 
     | 
    
         
            +
              "unit":{"type":"basicSI","label":"Celsius","symbol":"C"},
         
     | 
| 
      
 5 
     | 
    
         
            +
              "id":"0"},
         
     | 
| 
      
 6 
     | 
    
         
            +
              {"value":{"current_value":"33","min_value":"0.0","max_value":"1023.0"},
         
     | 
| 
      
 7 
     | 
    
         
            +
              "id":"1"},
         
     | 
| 
      
 8 
     | 
    
         
            +
              {"tags":["tagD2a","tagD2b","tagD2c"],
         
     | 
| 
      
 9 
     | 
    
         
            +
              "value":{"current_value":"42.1","min_value":"23.4","max_value":"1021.0"},
         
     | 
| 
      
 10 
     | 
    
         
            +
              "id":"2"}
         
     | 
| 
      
 11 
     | 
    
         
            +
            ],
         
     | 
| 
      
 12 
     | 
    
         
            +
            "description":"description here",
         
     | 
| 
      
 13 
     | 
    
         
            +
            "updated":"2009-02-11T10:56:56Z",
         
     | 
| 
      
 14 
     | 
    
         
            +
            "status":"frozen",
         
     | 
| 
      
 15 
     | 
    
         
            +
            "website":"http:\/\/example.com\/studio\/",
         
     | 
| 
      
 16 
     | 
    
         
            +
            "email":"someone@example.com",
         
     | 
| 
      
 17 
     | 
    
         
            +
            "feed":"http:\/\/example.com\/api\/1247.xml",
         
     | 
| 
      
 18 
     | 
    
         
            +
            "private":false,
         
     | 
| 
      
 19 
     | 
    
         
            +
            "location":{
         
     | 
| 
      
 20 
     | 
    
         
            +
              "lat":"50.1",
         
     | 
| 
      
 21 
     | 
    
         
            +
              "lon":"48.7",
         
     | 
| 
      
 22 
     | 
    
         
            +
              "ele":"1.34",
         
     | 
| 
      
 23 
     | 
    
         
            +
              "name":"Up on the roof (somewhere)",
         
     | 
| 
      
 24 
     | 
    
         
            +
              "domain":"physical",
         
     | 
| 
      
 25 
     | 
    
         
            +
              "exposure":"outdoor",
         
     | 
| 
      
 26 
     | 
    
         
            +
              "disposition":"mobile"
         
     | 
| 
      
 27 
     | 
    
         
            +
            },
         
     | 
| 
      
 28 
     | 
    
         
            +
            "icon":"http:\/\/example.com\/some\/icon.gif",
         
     | 
| 
      
 29 
     | 
    
         
            +
            "id":"1247",
         
     | 
| 
      
 30 
     | 
    
         
            +
            "title":"title here",
         
     | 
| 
      
 31 
     | 
    
         
            +
            "version":"5"}
         
     | 
| 
         @@ -0,0 +1,33 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <?xml version="1.0" encoding="UTF-8"?>
         
     | 
| 
      
 2 
     | 
    
         
            +
            <eeml xmlns="http://www.eeml.org/xsd/005" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="5" xsi:schemaLocation="http://www.eeml.org/xsd/005 http://www.eeml.org/xsd/005/005.xsd">
         
     | 
| 
      
 3 
     | 
    
         
            +
              <environment updated="2009-02-11T10:56:56Z" id="1247" creator="http://example.com/creator/">
         
     | 
| 
      
 4 
     | 
    
         
            +
                <title>title here</title>
         
     | 
| 
      
 5 
     | 
    
         
            +
                <feed>http://example.com/api/1247.xml</feed>
         
     | 
| 
      
 6 
     | 
    
         
            +
                <status>frozen</status>
         
     | 
| 
      
 7 
     | 
    
         
            +
                <description>description here</description>
         
     | 
| 
      
 8 
     | 
    
         
            +
                <icon>http://example.com/some/icon.gif</icon>
         
     | 
| 
      
 9 
     | 
    
         
            +
                <website>http://example.com/studio/</website>
         
     | 
| 
      
 10 
     | 
    
         
            +
                <email>someone@example.com</email>
         
     | 
| 
      
 11 
     | 
    
         
            +
                <private>false</private>
         
     | 
| 
      
 12 
     | 
    
         
            +
                <location domain="physical" exposure="outdoor" disposition="mobile">
         
     | 
| 
      
 13 
     | 
    
         
            +
                  <name>Up on the roof (somewhere)</name>
         
     | 
| 
      
 14 
     | 
    
         
            +
                  <lat>50.1</lat>
         
     | 
| 
      
 15 
     | 
    
         
            +
                  <lon>48.7</lon>
         
     | 
| 
      
 16 
     | 
    
         
            +
                  <ele>1.34</ele>
         
     | 
| 
      
 17 
     | 
    
         
            +
                </location>
         
     | 
| 
      
 18 
     | 
    
         
            +
                <data id="0">
         
     | 
| 
      
 19 
     | 
    
         
            +
                  <tag>tagD0</tag>
         
     | 
| 
      
 20 
     | 
    
         
            +
                  <value minValue="-9999.0" maxValue="1022.0">0</value>
         
     | 
| 
      
 21 
     | 
    
         
            +
                  <unit type="basicSI" symbol="C">Celsius</unit>
         
     | 
| 
      
 22 
     | 
    
         
            +
                </data>
         
     | 
| 
      
 23 
     | 
    
         
            +
                <data id="1">
         
     | 
| 
      
 24 
     | 
    
         
            +
                  <value minValue="0.0" maxValue="1023.0">33</value>
         
     | 
| 
      
 25 
     | 
    
         
            +
                </data>
         
     | 
| 
      
 26 
     | 
    
         
            +
                <data id="2">
         
     | 
| 
      
 27 
     | 
    
         
            +
                  <tag>tagD2a</tag>
         
     | 
| 
      
 28 
     | 
    
         
            +
                  <tag>tagD2b</tag>
         
     | 
| 
      
 29 
     | 
    
         
            +
                  <tag>tagD2c</tag>
         
     | 
| 
      
 30 
     | 
    
         
            +
                  <value minValue="23.4" maxValue="1021.0">42.1</value>
         
     | 
| 
      
 31 
     | 
    
         
            +
                </data>
         
     | 
| 
      
 32 
     | 
    
         
            +
              </environment>
         
     | 
| 
      
 33 
     | 
    
         
            +
            </eeml>
         
     | 
| 
         @@ -0,0 +1,31 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            {"datastreams":[
         
     | 
| 
      
 2 
     | 
    
         
            +
              {"tags":["tagD0"],
         
     | 
| 
      
 3 
     | 
    
         
            +
              "values":[{"value":"0","min_value":"-9999.0","max_value":"1022.0","recorded_at":"2009-02-11T10:56:56Z"}],
         
     | 
| 
      
 4 
     | 
    
         
            +
              "unit":{"type":"basicSI","label":"Celsius","symbol":"C"},
         
     | 
| 
      
 5 
     | 
    
         
            +
              "id":"0"},
         
     | 
| 
      
 6 
     | 
    
         
            +
              {"values":[{"value":"33","min_value":"0.0","max_value":"1023.0","recorded_at":"2009-02-11T10:56:55Z"}],
         
     | 
| 
      
 7 
     | 
    
         
            +
              "id":"1"},
         
     | 
| 
      
 8 
     | 
    
         
            +
              {"tags":["tagD2a","tagD2b","tagD2c"],
         
     | 
| 
      
 9 
     | 
    
         
            +
              "values":[{"value":"42.1","min_value":"23.4","max_value":"1021.0","recorded_at":"2009-02-11T10:55:10Z"}],
         
     | 
| 
      
 10 
     | 
    
         
            +
              "id":"2"}
         
     | 
| 
      
 11 
     | 
    
         
            +
            ],
         
     | 
| 
      
 12 
     | 
    
         
            +
            "description":"description here",
         
     | 
| 
      
 13 
     | 
    
         
            +
            "updated":"2009-02-11T10:56:56Z",
         
     | 
| 
      
 14 
     | 
    
         
            +
            "status":"frozen",
         
     | 
| 
      
 15 
     | 
    
         
            +
            "website":"http:\/\/example.com\/studio\/",
         
     | 
| 
      
 16 
     | 
    
         
            +
            "email":"someone@example.com",
         
     | 
| 
      
 17 
     | 
    
         
            +
            "feed":"http:\/\/example.com\/api\/1247.xml",
         
     | 
| 
      
 18 
     | 
    
         
            +
            "private":false,
         
     | 
| 
      
 19 
     | 
    
         
            +
            "location":{
         
     | 
| 
      
 20 
     | 
    
         
            +
              "lat":"50.1",
         
     | 
| 
      
 21 
     | 
    
         
            +
              "lon":"48.7",
         
     | 
| 
      
 22 
     | 
    
         
            +
              "ele":"1.34",
         
     | 
| 
      
 23 
     | 
    
         
            +
              "name":"Up on the roof (somewhere)",
         
     | 
| 
      
 24 
     | 
    
         
            +
              "domain":"physical",
         
     | 
| 
      
 25 
     | 
    
         
            +
              "exposure":"outdoor",
         
     | 
| 
      
 26 
     | 
    
         
            +
              "disposition":"mobile"
         
     | 
| 
      
 27 
     | 
    
         
            +
            },
         
     | 
| 
      
 28 
     | 
    
         
            +
            "icon":"http:\/\/example.com\/some\/icon.gif",
         
     | 
| 
      
 29 
     | 
    
         
            +
            "id":"1247",
         
     | 
| 
      
 30 
     | 
    
         
            +
            "title":"title here",
         
     | 
| 
      
 31 
     | 
    
         
            +
            "version":"0.6"}
         
     | 
| 
         @@ -0,0 +1,41 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            {"datastreams":[
         
     | 
| 
      
 2 
     | 
    
         
            +
              {
         
     | 
| 
      
 3 
     | 
    
         
            +
            	"tags":["tagD0"],
         
     | 
| 
      
 4 
     | 
    
         
            +
            	  "current_value":"0",
         
     | 
| 
      
 5 
     | 
    
         
            +
            	  "at":"2009-02-11T10:56:56Z",
         
     | 
| 
      
 6 
     | 
    
         
            +
            	  "min_value":"-9999.0",
         
     | 
| 
      
 7 
     | 
    
         
            +
            	  "max_value":"1022.0",
         
     | 
| 
      
 8 
     | 
    
         
            +
            	  "unit":{"type":"basicSI","label":"Celsius","symbol":"C"},
         
     | 
| 
      
 9 
     | 
    
         
            +
            	  "id":"0"
         
     | 
| 
      
 10 
     | 
    
         
            +
            },
         
     | 
| 
      
 11 
     | 
    
         
            +
              {
         
     | 
| 
      
 12 
     | 
    
         
            +
              "current_value":"33",
         
     | 
| 
      
 13 
     | 
    
         
            +
              "at":"2009-02-11T10:56:55Z",
         
     | 
| 
      
 14 
     | 
    
         
            +
              "min_value":"0.0","max_value":"1023.0",
         
     | 
| 
      
 15 
     | 
    
         
            +
              "id":"1"},
         
     | 
| 
      
 16 
     | 
    
         
            +
              {"tags":["tagD2a","tagD2b","tagD2c"],
         
     | 
| 
      
 17 
     | 
    
         
            +
              "current_value":"42.1",
         
     | 
| 
      
 18 
     | 
    
         
            +
              "at":"2009-02-11T10:55:10Z",
         
     | 
| 
      
 19 
     | 
    
         
            +
              "min_value":"23.4","max_value":"1021.0",
         
     | 
| 
      
 20 
     | 
    
         
            +
              "id":"2"}
         
     | 
| 
      
 21 
     | 
    
         
            +
            ],
         
     | 
| 
      
 22 
     | 
    
         
            +
            "description":"description here",
         
     | 
| 
      
 23 
     | 
    
         
            +
            "updated":"2010-02-11T10:56:56Z",
         
     | 
| 
      
 24 
     | 
    
         
            +
            "status":"frozen",
         
     | 
| 
      
 25 
     | 
    
         
            +
            "website":"http:\/\/example.com\/studio\/",
         
     | 
| 
      
 26 
     | 
    
         
            +
            "email":"someone@example.com",
         
     | 
| 
      
 27 
     | 
    
         
            +
            "feed":"http:\/\/example.com\/api\/1247.xml",
         
     | 
| 
      
 28 
     | 
    
         
            +
            "location":{
         
     | 
| 
      
 29 
     | 
    
         
            +
              "lat":"50.1",
         
     | 
| 
      
 30 
     | 
    
         
            +
              "lon":"48.7",
         
     | 
| 
      
 31 
     | 
    
         
            +
              "ele":"1.34",
         
     | 
| 
      
 32 
     | 
    
         
            +
              "name":"Up on the roof (somewhere)",
         
     | 
| 
      
 33 
     | 
    
         
            +
              "domain":"physical",
         
     | 
| 
      
 34 
     | 
    
         
            +
              "exposure":"outdoor",
         
     | 
| 
      
 35 
     | 
    
         
            +
              "disposition":"mobile"
         
     | 
| 
      
 36 
     | 
    
         
            +
            },
         
     | 
| 
      
 37 
     | 
    
         
            +
            "icon":"http:\/\/example.com\/some\/icon.gif",
         
     | 
| 
      
 38 
     | 
    
         
            +
            "id":"1247",
         
     | 
| 
      
 39 
     | 
    
         
            +
            "title":"title here",
         
     | 
| 
      
 40 
     | 
    
         
            +
            "version":"1.0.0",
         
     | 
| 
      
 41 
     | 
    
         
            +
            "tags":["tagE0", "tagE1"]}
         
     | 
| 
         @@ -0,0 +1,14 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <?xml version="1.0" encoding="UTF-8"?>
         
     | 
| 
      
 2 
     | 
    
         
            +
            <eeml xmlns="http://www.eeml.org/xsd/0.5.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="0.5.1" xsi:schemaLocation="http://www.eeml.org/xsd/0.5.1 http://www.eeml.org/xsd/0.5.1/0.5.1.xsd">
         
     | 
| 
      
 3 
     | 
    
         
            +
              <environment>
         
     | 
| 
      
 4 
     | 
    
         
            +
                <tag>Cambodia</tag>
         
     | 
| 
      
 5 
     | 
    
         
            +
                <tag>House</tag>
         
     | 
| 
      
 6 
     | 
    
         
            +
                <data id="0">
         
     | 
| 
      
 7 
     | 
    
         
            +
                  <tag>sometag</tag>
         
     | 
| 
      
 8 
     | 
    
         
            +
                  <current_value>65</current_value>
         
     | 
| 
      
 9 
     | 
    
         
            +
                  <max_value>100.0</max_value>
         
     | 
| 
      
 10 
     | 
    
         
            +
                  <min_value>4.0</min_value>
         
     | 
| 
      
 11 
     | 
    
         
            +
                </data>
         
     | 
| 
      
 12 
     | 
    
         
            +
              </environment>
         
     | 
| 
      
 13 
     | 
    
         
            +
            </eeml>
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
    
        data/test/test_environment.rb
    CHANGED
    
    | 
         @@ -180,6 +180,11 @@ class TestEnvironment < Test::Unit::TestCase 
     | 
|
| 
       180 
180 
     | 
    
         
             
                assert_equal true, env.private
         
     | 
| 
       181 
181 
     | 
    
         
             
              end
         
     | 
| 
       182 
182 
     | 
    
         | 
| 
      
 183 
     | 
    
         
            +
              test "captures the `private` attribute as false if present and false" do
         
     | 
| 
      
 184 
     | 
    
         
            +
                env = create_env_from_xml_file("doc_1_non_private.xml")
         
     | 
| 
      
 185 
     | 
    
         
            +
                assert_equal false, env.private
         
     | 
| 
      
 186 
     | 
    
         
            +
              end
         
     | 
| 
      
 187 
     | 
    
         
            +
             
     | 
| 
       183 
188 
     | 
    
         
             
              test "ok parsing oddly tagged eeml file" do
         
     | 
| 
       184 
189 
     | 
    
         
             
                env = create_env_from_xml_file('difficult_tag.xml')
         
     | 
| 
       185 
190 
     | 
    
         
             
                assert_equal 2, env.datastreams.size
         
     | 
| 
         @@ -196,6 +201,16 @@ class TestEnvironment < Test::Unit::TestCase 
     | 
|
| 
       196 
201 
     | 
    
         
             
                assert_equal 'celsius', d.unit_value
         
     | 
| 
       197 
202 
     | 
    
         
             
              end
         
     | 
| 
       198 
203 
     | 
    
         | 
| 
      
 204 
     | 
    
         
            +
              test "parses environment level tags from v051 xml" do
         
     | 
| 
      
 205 
     | 
    
         
            +
                env = create_env_from_xml_file('environment_tags.xml')
         
     | 
| 
      
 206 
     | 
    
         
            +
             
     | 
| 
      
 207 
     | 
    
         
            +
                assert_equal 2, env.tags.size
         
     | 
| 
      
 208 
     | 
    
         
            +
                assert_equal 'Cambodia', env.tags[0]
         
     | 
| 
      
 209 
     | 
    
         
            +
                assert_equal 'House', env.tags[1]
         
     | 
| 
      
 210 
     | 
    
         
            +
             
     | 
| 
      
 211 
     | 
    
         
            +
                assert_equal 1, env.datastreams.size
         
     | 
| 
      
 212 
     | 
    
         
            +
              end
         
     | 
| 
      
 213 
     | 
    
         
            +
             
     | 
| 
       199 
214 
     | 
    
         
             
              test "creates multiple environments from list xml" do
         
     | 
| 
       200 
215 
     | 
    
         
             
                xml = File.read('test/data/list.xml')
         
     | 
| 
       201 
216 
     | 
    
         
             
                list = Environment.new_list_from_eeml(xml)
         
     | 
| 
         @@ -429,6 +444,15 @@ class TestEnvironment < Test::Unit::TestCase 
     | 
|
| 
       429 
444 
     | 
    
         
             
                end
         
     | 
| 
       430 
445 
     | 
    
         
             
              end
         
     | 
| 
       431 
446 
     | 
    
         | 
| 
      
 447 
     | 
    
         
            +
              test "parses environment level tags from v1.0.0 json" do
         
     | 
| 
      
 448 
     | 
    
         
            +
                env = create_env_from_json_file('test/data/environment_tags.json')
         
     | 
| 
      
 449 
     | 
    
         
            +
                assert_equal 3, env.datastreams.size
         
     | 
| 
      
 450 
     | 
    
         
            +
             
     | 
| 
      
 451 
     | 
    
         
            +
                assert_equal 2, env.tags.size
         
     | 
| 
      
 452 
     | 
    
         
            +
                assert_equal env.tags[0], 'tagE0'
         
     | 
| 
      
 453 
     | 
    
         
            +
                assert_equal env.tags[1], 'tagE1'
         
     | 
| 
      
 454 
     | 
    
         
            +
              end
         
     | 
| 
      
 455 
     | 
    
         
            +
             
     | 
| 
       432 
456 
     | 
    
         
             
              test "parses a v6 input file ok" do
         
     | 
| 
       433 
457 
     | 
    
         
             
                env = create_env_from_json_v6_file_one
         
     | 
| 
       434 
458 
     | 
    
         
             
                assert_not_nil env
         
     | 
| 
         @@ -497,12 +521,23 @@ class TestEnvironment < Test::Unit::TestCase 
     | 
|
| 
       497 
521 
     | 
    
         
             
                assert_equal true, env.private
         
     | 
| 
       498 
522 
     | 
    
         
             
              end
         
     | 
| 
       499 
523 
     | 
    
         | 
| 
      
 524 
     | 
    
         
            +
              test "captures the `private` attribute as false if present and false when parsing old json" do
         
     | 
| 
      
 525 
     | 
    
         
            +
                env = create_env_from_json_file("test/data/doc_1_non_private.json")
         
     | 
| 
      
 526 
     | 
    
         
            +
                assert_equal false, env.private
         
     | 
| 
      
 527 
     | 
    
         
            +
              end
         
     | 
| 
      
 528 
     | 
    
         
            +
             
     | 
| 
       500 
529 
     | 
    
         
             
              test "captures `private` attribute when parsing v6 json" do
         
     | 
| 
       501 
530 
     | 
    
         
             
                env = create_env_from_json_file("test/data/doc_1_v6_private.json")
         
     | 
| 
       502 
531 
     | 
    
         
             
                assert_not_nil env
         
     | 
| 
       503 
532 
     | 
    
         
             
                assert_equal true, env.private
         
     | 
| 
       504 
533 
     | 
    
         
             
              end
         
     | 
| 
       505 
534 
     | 
    
         | 
| 
      
 535 
     | 
    
         
            +
              test "captures the `private` attribute as false if present and false when parsing v6 json" do
         
     | 
| 
      
 536 
     | 
    
         
            +
                env = create_env_from_json_file("test/data/doc_1_v6_non_private.json")
         
     | 
| 
      
 537 
     | 
    
         
            +
                assert_not_nil env
         
     | 
| 
      
 538 
     | 
    
         
            +
                assert_equal false, env.private
         
     | 
| 
      
 539 
     | 
    
         
            +
              end
         
     | 
| 
      
 540 
     | 
    
         
            +
             
     | 
| 
       506 
541 
     | 
    
         
             
              # ---                 -------------------------------------------------------
         
     | 
| 
       507 
542 
     | 
    
         
             
              # --- csv input stuff -------------------------------------------------------
         
     | 
| 
       508 
543 
     | 
    
         
             
              # ---                 -------------------------------------------------------
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,23 +1,24 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification 
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: eeml
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       4 
     | 
    
         
            -
              hash:  
     | 
| 
      
 4 
     | 
    
         
            +
              hash: 53
         
     | 
| 
       5 
5 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       6 
6 
     | 
    
         
             
              segments: 
         
     | 
| 
       7 
7 
     | 
    
         
             
              - 0
         
     | 
| 
       8 
8 
     | 
    
         
             
              - 0
         
     | 
| 
       9 
     | 
    
         
            -
              -  
     | 
| 
       10 
     | 
    
         
            -
              version: 0.0. 
     | 
| 
      
 9 
     | 
    
         
            +
              - 21
         
     | 
| 
      
 10 
     | 
    
         
            +
              version: 0.0.21
         
     | 
| 
       11 
11 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       12 
12 
     | 
    
         
             
            authors: 
         
     | 
| 
       13 
13 
     | 
    
         
             
            - Neill Bogie
         
     | 
| 
       14 
14 
     | 
    
         
             
            - Sam Mulube
         
     | 
| 
       15 
15 
     | 
    
         
             
            - Levent Ali
         
     | 
| 
      
 16 
     | 
    
         
            +
            - Paul Bellamy
         
     | 
| 
       16 
17 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       17 
18 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       18 
19 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       19 
20 
     | 
    
         | 
| 
       20 
     | 
    
         
            -
            date: 2010- 
     | 
| 
      
 21 
     | 
    
         
            +
            date: 2010-08-20 00:00:00 +01:00
         
     | 
| 
       21 
22 
     | 
    
         
             
            default_executable: 
         
     | 
| 
       22 
23 
     | 
    
         
             
            dependencies: 
         
     | 
| 
       23 
24 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
         @@ -85,20 +86,26 @@ files: 
     | 
|
| 
       85 
86 
     | 
    
         
             
            - lib/eeml/libxml_eeml_parser_v005.rb
         
     | 
| 
       86 
87 
     | 
    
         
             
            - lib/eeml/libxml_eeml_parser_v051.rb
         
     | 
| 
       87 
88 
     | 
    
         
             
            - lib/eeml/output_registry.rb
         
     | 
| 
      
 89 
     | 
    
         
            +
            - schemas/eeml/0.5.1.xsd
         
     | 
| 
       88 
90 
     | 
    
         
             
            - schemas/eeml/005.xsd
         
     | 
| 
       89 
91 
     | 
    
         
             
            - test/data/.gitignore
         
     | 
| 
       90 
92 
     | 
    
         
             
            - test/data/complete_namespaced.xml
         
     | 
| 
       91 
93 
     | 
    
         
             
            - test/data/difficult_tag.xml
         
     | 
| 
       92 
94 
     | 
    
         
             
            - test/data/doc_1.json
         
     | 
| 
       93 
95 
     | 
    
         
             
            - test/data/doc_1.xml
         
     | 
| 
      
 96 
     | 
    
         
            +
            - test/data/doc_1_non_private.json
         
     | 
| 
      
 97 
     | 
    
         
            +
            - test/data/doc_1_non_private.xml
         
     | 
| 
       94 
98 
     | 
    
         
             
            - test/data/doc_1_private.json
         
     | 
| 
       95 
99 
     | 
    
         
             
            - test/data/doc_1_private.xml
         
     | 
| 
       96 
100 
     | 
    
         
             
            - test/data/doc_1_v1-0-0.json
         
     | 
| 
       97 
101 
     | 
    
         
             
            - test/data/doc_1_v6.json
         
     | 
| 
      
 102 
     | 
    
         
            +
            - test/data/doc_1_v6_non_private.json
         
     | 
| 
       98 
103 
     | 
    
         
             
            - test/data/doc_1_v6_private.json
         
     | 
| 
       99 
104 
     | 
    
         
             
            - test/data/doc_2.xml
         
     | 
| 
       100 
105 
     | 
    
         
             
            - test/data/doc_2_expected.json
         
     | 
| 
       101 
106 
     | 
    
         
             
            - test/data/eeml_datastream_051.xml
         
     | 
| 
      
 107 
     | 
    
         
            +
            - test/data/environment_tags.json
         
     | 
| 
      
 108 
     | 
    
         
            +
            - test/data/environment_tags.xml
         
     | 
| 
       102 
109 
     | 
    
         
             
            - test/data/list.xml
         
     | 
| 
       103 
110 
     | 
    
         
             
            - test/data/minimal.xml
         
     | 
| 
       104 
111 
     | 
    
         
             
            - test/data/no_namespace.xml
         
     | 
| 
         @@ -144,7 +151,7 @@ specification_version: 3 
     | 
|
| 
       144 
151 
     | 
    
         
             
            summary: Simple little library for programmatically manipulating EEML documents.
         
     | 
| 
       145 
152 
     | 
    
         
             
            test_files: 
         
     | 
| 
       146 
153 
     | 
    
         
             
            - test/test_helper.rb
         
     | 
| 
       147 
     | 
    
         
            -
            - test/test_libxml_eeml_parser_v005.rb
         
     | 
| 
       148 
154 
     | 
    
         
             
            - test/test_libxml_test_helper.rb
         
     | 
| 
      
 155 
     | 
    
         
            +
            - test/test_libxml_eeml_parser_v005.rb
         
     | 
| 
       149 
156 
     | 
    
         
             
            - test/test_environment.rb
         
     | 
| 
       150 
157 
     | 
    
         
             
            - test/libxml_test_helper.rb
         
     |