eeml 0.0.38 → 0.0.39

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.
@@ -16,6 +16,6 @@ require 'time'
16
16
  module Eeml
17
17
 
18
18
  # library version number
19
- VERSION = '0.0.38'
19
+ VERSION = '0.0.39'
20
20
 
21
21
  end #module
@@ -21,12 +21,13 @@ module Eeml
21
21
  # One of the component classes of Environment. Represents an individual datastream, and provides access to it's value
22
22
  # and other attributes. Environments can have zero or more datastreams.
23
23
  class DataStream
24
- attr_accessor :identifier, :tags, :unit_symbol, :unit_type, :unit_value
24
+ attr_accessor :identifier, :tags, :unit_symbol, :unit_type, :unit_value, :has_tag_element
25
25
  attr_accessor :values
26
26
 
27
27
  def initialize(options = {})
28
28
  @identifier = options[:identifier]
29
29
  @tags = []
30
+ @has_tag_element = false
30
31
  @unit_symbol = options[:unit_symbol]
31
32
  @unit_type = options[:unit_type]
32
33
  @unit_value = options[:unit_value]
@@ -103,7 +104,7 @@ module Eeml
103
104
  attr_accessor :location
104
105
  attr_accessor :csv_version
105
106
  attr_accessor :datastreams
106
- attr_accessor :tags
107
+ attr_accessor :tags, :has_tag_element
107
108
  attr_writer :private
108
109
 
109
110
  # Create a new Environment object by passing parameters in a hash (just
@@ -123,6 +124,7 @@ module Eeml
123
124
  @csv_version = options[:csv_version]
124
125
  @publisher = options[:publisher]
125
126
  @tags = []
127
+ @has_tag_element = false
126
128
  end
127
129
 
128
130
  def add_datastream(datastream)
@@ -50,6 +50,7 @@ module Eeml
50
50
  datastream = DataStream.new
51
51
  raise MissingAttribute.new('id', "data") if datastream_hash['id'].nil?
52
52
  datastream.identifier = datastream_hash['id']
53
+ datastream.has_tag_element = !!datastream_hash['tags']
53
54
  datastream.tags = datastream_hash['tags'] unless datastream_hash['tags'].nil?
54
55
 
55
56
  value_hash = datastream_hash["value"]
@@ -50,6 +50,7 @@ module Eeml
50
50
  datastream = DataStream.new
51
51
  raise MissingAttribute.new('id', "data") if datastream_hash['id'].nil?
52
52
  datastream.identifier = datastream_hash['id']
53
+ datastream.has_tag_element = !!datastream_hash['tags']
53
54
  datastream.tags = datastream_hash['tags'] unless datastream_hash['tags'].nil?
54
55
 
55
56
  values_arr = datastream_hash["values"]
@@ -17,7 +17,8 @@ module Eeml
17
17
  :creator => env_hash["creator"])
18
18
 
19
19
  env.updated = Time.gm(*ParseDate.parsedate(env_hash['updated'])) unless env_hash['updated'].nil?
20
-
20
+
21
+ env.has_tag_element = !!env_hash['tags']
21
22
  env.tags = env_hash['tags'] unless env_hash['tags'].nil?
22
23
 
23
24
  env.location = buildLocation(env_hash)
@@ -54,6 +55,7 @@ module Eeml
54
55
  datastream = DataStream.new
55
56
  raise MissingAttribute.new('id', "data") if datastream_hash['id'].nil?
56
57
  datastream.identifier = datastream_hash['id']
58
+ datastream.has_tag_element = !!datastream_hash['tags']
57
59
  datastream.tags = datastream_hash['tags'] unless datastream_hash['tags'].nil?
58
60
 
59
61
  #values_arr = datastream_hash["history"]
@@ -142,6 +142,7 @@ module Eeml
142
142
  node.find('x:tag', "x:#{@@eeml_version[:href]}").each do |tag_node|
143
143
  data.tags << tag_node.content.strip
144
144
  end
145
+ data.has_tag_element = true
145
146
 
146
147
  value_nodes = node.find('x:value', "x:#{@@eeml_version[:href]}")
147
148
  raise exception_for_node(node, DataMissingValue, "Data node is missing value node.") if value_nodes.empty?
@@ -87,6 +87,7 @@ module Eeml
87
87
  env_node.find('x:tag', "x:#{@@eeml_version[:href]}").each do |tag_node|
88
88
  env.tags << tag_node.content.strip
89
89
  end
90
+ env.has_tag_element = true
90
91
 
91
92
  datastream_nodes = env_node.find('x:data', "x:#{@@eeml_version[:href]}")
92
93
  # raise NoDataStreams.new, "no datastreams found" if datastream_nodes.empty?
@@ -148,6 +149,7 @@ module Eeml
148
149
  node.find('x:tag', "x:#{@@eeml_version[:href]}").each do |tag_node|
149
150
  data.tags << tag_node.content.strip
150
151
  end
152
+ data.has_tag_element = true
151
153
 
152
154
  value_nodes = node.find('x:current_value', "x:#{@@eeml_version[:href]}")
153
155
  # raise exception_for_node(node, DataMissingValue, "Data node is missing current_value node.") if value_nodes.empty?
@@ -0,0 +1,44 @@
1
+ {"datastreams":[
2
+ {
3
+ "current_value":"0",
4
+ "at":"2009-02-11T10:56:56Z",
5
+ "min_value":"-9999.0",
6
+ "max_value":"1022.0",
7
+ "unit":{"type":"basicSI","label":"Celsius","symbol":"C"},
8
+ "id":"0",
9
+ "tags":[]
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":[]},
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
+ "tags":[]}
22
+ ],
23
+ "description":"description here",
24
+ "updated":"2010-02-11T10:56:56Z",
25
+ "status":"frozen",
26
+ "website":"http:\/\/example.com\/studio\/",
27
+ "email":"someone@example.com",
28
+ "feed":"http:\/\/example.com\/api\/1247.xml",
29
+ "location":{
30
+ "lat":"50.1",
31
+ "lon":"48.7",
32
+ "ele":"1.34",
33
+ "name":"Up on the roof (somewhere)",
34
+ "domain":"physical",
35
+ "exposure":"outdoor",
36
+ "disposition":"mobile"
37
+ },
38
+ "icon":"http:\/\/example.com\/some\/icon.gif",
39
+ "id":"1247",
40
+ "title":"title here",
41
+ "version":"1.0.0",
42
+ "owner":"http:\/\/www.pachube.com\/users\/joe",
43
+ "publisher":"http:\/\/www.pachube.com",
44
+ "tags":[]}
@@ -0,0 +1,40 @@
1
+ {"datastreams":[
2
+ {
3
+ "current_value":"0",
4
+ "at":"2009-02-11T10:56:56Z",
5
+ "min_value":"-9999.0",
6
+ "max_value":"1022.0",
7
+ "unit":{"type":"basicSI","label":"Celsius","symbol":"C"},
8
+ "id":"0"
9
+ },
10
+ {
11
+ "current_value":"33",
12
+ "at":"2009-02-11T10:56:55Z",
13
+ "min_value":"0.0","max_value":"1023.0",
14
+ "id":"1"},
15
+ {"current_value":"42.1",
16
+ "at":"2009-02-11T10:55:10Z",
17
+ "min_value":"23.4","max_value":"1021.0",
18
+ "id":"2"}
19
+ ],
20
+ "description":"description here",
21
+ "updated":"2010-02-11T10:56:56Z",
22
+ "status":"frozen",
23
+ "website":"http:\/\/example.com\/studio\/",
24
+ "email":"someone@example.com",
25
+ "feed":"http:\/\/example.com\/api\/1247.xml",
26
+ "location":{
27
+ "lat":"50.1",
28
+ "lon":"48.7",
29
+ "ele":"1.34",
30
+ "name":"Up on the roof (somewhere)",
31
+ "domain":"physical",
32
+ "exposure":"outdoor",
33
+ "disposition":"mobile"
34
+ },
35
+ "icon":"http:\/\/example.com\/some\/icon.gif",
36
+ "id":"1247",
37
+ "title":"title here",
38
+ "version":"1.0.0",
39
+ "owner":"http:\/\/www.pachube.com\/users\/joe",
40
+ "publisher":"http:\/\/www.pachube.com"}
@@ -213,6 +213,7 @@ class TestEnvironment < Test::Unit::TestCase
213
213
  assert_equal 'House', env.tags[1]
214
214
 
215
215
  assert_equal 1, env.datastreams.size
216
+ assert_equal true, env.has_tag_element
216
217
  end
217
218
 
218
219
  test "creates multiple environments from list xml" do
@@ -492,6 +493,27 @@ class TestEnvironment < Test::Unit::TestCase
492
493
  assert_equal 2, env.tags.size
493
494
  assert_equal env.tags[0], 'tagE0'
494
495
  assert_equal env.tags[1], 'tagE1'
496
+ assert_equal true, env.has_tag_element
497
+ end
498
+
499
+ test "sets has_tag_element to false if there are no tag elements" do
500
+ env = create_env_from_json_file('test/data/environment_no_tags.json')
501
+ assert_equal 3, env.datastreams.size
502
+
503
+ assert_equal false, env.has_tag_element
504
+ assert_equal env.datastreams[0].has_tag_element, false
505
+ assert_equal env.datastreams[1].has_tag_element, false
506
+ assert_equal env.datastreams[2].has_tag_element, false
507
+ end
508
+
509
+ test "sets has_tag_element to true if there are empty tag elements" do
510
+ env = create_env_from_json_file('test/data/environment_empty_tags.json')
511
+ assert_equal 3, env.datastreams.size
512
+
513
+ assert_equal true, env.has_tag_element
514
+ assert_equal env.datastreams[0].has_tag_element, true
515
+ assert_equal env.datastreams[1].has_tag_element, true
516
+ assert_equal env.datastreams[2].has_tag_element, true
495
517
  end
496
518
 
497
519
  test "parses a v6 input file ok" do
@@ -509,6 +531,7 @@ class TestEnvironment < Test::Unit::TestCase
509
531
  #env attrs
510
532
  assert_equal('1247', env.identifier)
511
533
  assert_equal('2009-02-11T10:56:56Z', env.updated.utc.iso8601)
534
+ assert_equal false, env.has_tag_element
512
535
  end
513
536
 
514
537
  test "location parses ok from json when parsing a v6 file" do
@@ -553,6 +576,7 @@ class TestEnvironment < Test::Unit::TestCase
553
576
  assert_equal e_unit_symbol, ds.unit_symbol
554
577
  assert_equal e_unit_type, ds.unit_type
555
578
  assert_equal e_unit_value, ds.unit_value
579
+ assert_equal false, env.has_tag_element
556
580
  end
557
581
  end
558
582
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eeml
3
3
  version: !ruby/object:Gem::Version
4
- hash: 83
4
+ hash: 81
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 38
10
- version: 0.0.38
9
+ - 39
10
+ version: 0.0.39
11
11
  platform: ruby
12
12
  authors:
13
13
  - Neill Bogie
@@ -18,7 +18,7 @@ autorequire:
18
18
  bindir: bin
19
19
  cert_chain: []
20
20
 
21
- date: 2011-03-14 00:00:00 +00:00
21
+ date: 2011-05-13 00:00:00 +00:00
22
22
  default_executable:
23
23
  dependencies:
24
24
  - !ruby/object:Gem::Dependency
@@ -119,7 +119,9 @@ files:
119
119
  - test/data/doc_2.xml
120
120
  - test/data/doc_2_expected.json
121
121
  - test/data/eeml_datastream_051.xml
122
+ - test/data/environment_empty_tags.json
122
123
  - test/data/environment_minimal_051.xml
124
+ - test/data/environment_no_tags.json
123
125
  - test/data/environment_tags.json
124
126
  - test/data/environment_tags.xml
125
127
  - test/data/list.xml
@@ -168,10 +170,10 @@ signing_key:
168
170
  specification_version: 3
169
171
  summary: Simple little library for programmatically manipulating EEML documents.
170
172
  test_files:
171
- - test/test_libxml_eeml_parser_v005.rb
173
+ - test/libxml_test_helper.rb
172
174
  - test/test_libxml_test_helper.rb
175
+ - test/test_libxml_eeml_parser_v005.rb
173
176
  - test/test_csv_parser_v2.rb
177
+ - test/test_helper.rb
174
178
  - test/test_csv_parser_v1.rb
175
179
  - test/test_environment.rb
176
- - test/libxml_test_helper.rb
177
- - test/test_helper.rb