eeml 0.0.18 → 0.0.21

Sign up to get free protection for your applications and to get access to all the features.
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")
@@ -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)
@@ -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
@@ -15,7 +15,7 @@ require 'time'
15
15
  module Eeml
16
16
 
17
17
  # library version number
18
- VERSION = '0.0.18'
18
+ VERSION = '0.0.21'
19
19
 
20
20
  # TODO: put in some configuration file, not here
21
21
  LOCAL_EEML_SCHEMA_LOCATION = 'schemas/eeml/005.xsd'
@@ -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
@@ -131,4 +131,4 @@
131
131
  </xsd:attribute>
132
132
  </xsd:complexType>
133
133
  </xsd:element>
134
- </xsd:schema>
134
+ </xsd:schema>
@@ -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
+
@@ -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: 59
4
+ hash: 53
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 18
10
- version: 0.0.18
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-07-20 00:00:00 +01:00
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