eeml 0.0.10 → 0.0.11
Sign up to get free protection for your applications and to get access to all the features.
- data/eeml.gemspec +2 -2
- data/lib/eeml/environment_builder.rb +3 -4
- data/lib/eeml/libxml_eeml_output_v005.rb +4 -5
- data/lib/eeml/libxml_eeml_parser_v005.rb +18 -19
- data/lib/eeml/output_registry.rb +2 -2
- data/lib/eeml.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +2 -2
- metadata.gz.sig +0 -0
data/eeml.gemspec
CHANGED
@@ -2,12 +2,12 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{eeml}
|
5
|
-
s.version = "0.0.
|
5
|
+
s.version = "0.0.11"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Neill Bogie, Sam Mulube"]
|
9
9
|
s.cert_chain = ["/home/sam/.gem/gem-public_cert.pem"]
|
10
|
-
s.date = %q{2009-11-
|
10
|
+
s.date = %q{2009-11-29}
|
11
11
|
s.description = %q{Simple little library for programmatically manipulating EEML documents, in particular this library is designed to work with the Pachube web service.}
|
12
12
|
s.email = %q{sam.mulube@gmail.com}
|
13
13
|
s.extra_rdoc_files = ["CHANGELOG", "LICENSE", "README", "lib/blank.rb", "lib/eeml.rb", "lib/eeml/constants.rb", "lib/eeml/csv_parser.rb", "lib/eeml/environment.rb", "lib/eeml/environment_builder.rb", "lib/eeml/exceptions.rb", "lib/eeml/json_environment_parser_v005.rb", "lib/eeml/json_environment_parser_v006.rb", "lib/eeml/json_output.rb", "lib/eeml/libxml_eeml_output_v005.rb", "lib/eeml/libxml_eeml_parser_v005.rb", "lib/eeml/output_registry.rb"]
|
@@ -4,7 +4,6 @@ require 'eeml/json_environment_parser_v006'
|
|
4
4
|
|
5
5
|
module Eeml
|
6
6
|
class EnvironmentBuilder # :nodoc:
|
7
|
-
include Constants
|
8
7
|
|
9
8
|
def self.build_from_xml(xml_str)
|
10
9
|
parser = LibXMLEemlParserV005.new
|
@@ -18,12 +17,12 @@ module Eeml
|
|
18
17
|
|
19
18
|
def self.build_from_json(json_str)
|
20
19
|
json = JSON.parse(json_str)
|
21
|
-
if json["version"] == EEML5_VERSION
|
20
|
+
if json["version"] == Constants::EEML5_VERSION
|
22
21
|
parser = JsonEnvironmentParserV005.new
|
23
|
-
elsif json["version"] == EEML6_VERSION
|
22
|
+
elsif json["version"] == Constants::EEML6_VERSION
|
24
23
|
parser = JsonEnvironmentParserV006.new
|
25
24
|
else
|
26
|
-
raise "Invalid version specification. Permitted versions are #{EEML5_VERSION} and #{EEML6_VERSION}"
|
25
|
+
raise "Invalid version specification. Permitted versions are #{Constants::EEML5_VERSION} and #{Constants::EEML6_VERSION}"
|
27
26
|
end
|
28
27
|
return parser.make_environment_from_hash(json)
|
29
28
|
end
|
@@ -1,16 +1,15 @@
|
|
1
1
|
module Eeml
|
2
2
|
class LibXMLEemlOutputV005 # :nodoc:
|
3
3
|
include LibXML
|
4
|
-
include Constants
|
5
4
|
|
6
5
|
# main method. creates an EEML 5 document for the given environment.
|
7
6
|
def to_eeml(environment)
|
8
7
|
doc = XML::Document.new
|
9
8
|
eeml = doc.root = XML::Node.new('eeml')
|
10
|
-
XML::Namespace.new(eeml, nil, EEML5_HREF)
|
11
|
-
XML::Namespace.new(eeml, 'xsi', XSI_NAMESPACE)
|
12
|
-
eeml['version'] = EEML5_VERSION
|
13
|
-
eeml['xsi:schemaLocation'] = EEML5_SCHEMA_LOCATION
|
9
|
+
XML::Namespace.new(eeml, nil, Constants::EEML5_HREF)
|
10
|
+
XML::Namespace.new(eeml, 'xsi', Constants::XSI_NAMESPACE)
|
11
|
+
eeml['version'] = Constants::EEML5_VERSION
|
12
|
+
eeml['xsi:schemaLocation'] = Constants::EEML5_SCHEMA_LOCATION
|
14
13
|
eeml << xml_node_for_environment(environment)
|
15
14
|
|
16
15
|
return doc.to_s(:encoding => XML::Encoding::UTF_8)
|
@@ -4,7 +4,6 @@ module Eeml
|
|
4
4
|
class LibXMLEemlParserV005 # :nodoc:
|
5
5
|
include LibXML
|
6
6
|
include Exceptions
|
7
|
-
include Constants
|
8
7
|
|
9
8
|
#main method
|
10
9
|
|
@@ -54,13 +53,13 @@ module Eeml
|
|
54
53
|
|
55
54
|
#multiple (zero or more)
|
56
55
|
def extract_environments_from_doc(doc)
|
57
|
-
env_nodes = doc.find('x:environment', "x:#{EEML5_HREF}")
|
56
|
+
env_nodes = doc.find('x:environment', "x:#{Constants::EEML5_HREF}")
|
58
57
|
return env_nodes.map{|env_node| new_env = Environment.new; extract_environment_from_node(env_node, new_env)}
|
59
58
|
end
|
60
59
|
|
61
60
|
#single, mandatory
|
62
61
|
def extract_environment_from_doc(doc, env_to_populate)
|
63
|
-
env_node = find_first_node_or_fail(doc, 'x:environment', 'environment', "x:#{EEML5_HREF}")
|
62
|
+
env_node = find_first_node_or_fail(doc, 'x:environment', 'environment', "x:#{Constants::EEML5_HREF}")
|
64
63
|
return extract_environment_from_node(env_node, env_to_populate)
|
65
64
|
end
|
66
65
|
|
@@ -72,19 +71,19 @@ module Eeml
|
|
72
71
|
|
73
72
|
env.creator = env_node['creator']
|
74
73
|
|
75
|
-
env.title = optional_content(env_node, 'x:title', 'title', "x:#{EEML5_HREF}")
|
76
|
-
env.feed_url = optional_content(env_node, 'x:feed', 'feed', "x:#{EEML5_HREF}")
|
77
|
-
env.description = optional_content(env_node, 'x:description', 'description', "x:#{EEML5_HREF}")
|
78
|
-
env.website = optional_content(env_node, 'x:website', 'website', "x:#{EEML5_HREF}")
|
79
|
-
env.status = optional_content(env_node, 'x:status', 'status', "x:#{EEML5_HREF}")
|
80
|
-
env.email = optional_content(env_node, 'x:email', 'email', "x:#{EEML5_HREF}")
|
81
|
-
env.icon = optional_content(env_node, 'x:icon', 'icon', "x:#{EEML5_HREF}")
|
74
|
+
env.title = optional_content(env_node, 'x:title', 'title', "x:#{Constants::EEML5_HREF}")
|
75
|
+
env.feed_url = optional_content(env_node, 'x:feed', 'feed', "x:#{Constants::EEML5_HREF}")
|
76
|
+
env.description = optional_content(env_node, 'x:description', 'description', "x:#{Constants::EEML5_HREF}")
|
77
|
+
env.website = optional_content(env_node, 'x:website', 'website', "x:#{Constants::EEML5_HREF}")
|
78
|
+
env.status = optional_content(env_node, 'x:status', 'status', "x:#{Constants::EEML5_HREF}")
|
79
|
+
env.email = optional_content(env_node, 'x:email', 'email', "x:#{Constants::EEML5_HREF}")
|
80
|
+
env.icon = optional_content(env_node, 'x:icon', 'icon', "x:#{Constants::EEML5_HREF}")
|
82
81
|
|
83
82
|
#find_first_node_or_fail(env_node, 'x:location', 'location')
|
84
|
-
loc_node = env_node.find_first('x:location', "x:#{EEML5_HREF}")
|
83
|
+
loc_node = env_node.find_first('x:location', "x:#{Constants::EEML5_HREF}")
|
85
84
|
env.location = extractLocation(loc_node) if loc_node
|
86
85
|
|
87
|
-
datastream_nodes = env_node.find('x:data', "x:#{EEML5_HREF}")
|
86
|
+
datastream_nodes = env_node.find('x:data', "x:#{Constants::EEML5_HREF}")
|
88
87
|
# raise NoDataStreams.new, "no datastreams found" if datastream_nodes.empty?
|
89
88
|
env.datastreams = extractDataStreams(datastream_nodes) unless datastream_nodes.empty?
|
90
89
|
|
@@ -102,10 +101,10 @@ module Eeml
|
|
102
101
|
loc.domain = node['domain']
|
103
102
|
loc.disposition = node['disposition']
|
104
103
|
loc.exposure = node['exposure']
|
105
|
-
loc.name = optional_content(node, 'x:name', 'name', "x:#{EEML5_HREF}")
|
106
|
-
loc.latitude = optional_content(node, 'x:lat', 'lat', "x:#{EEML5_HREF}")
|
107
|
-
loc.longitude = optional_content(node, 'x:lon', 'lon', "x:#{EEML5_HREF}")
|
108
|
-
loc.elevation = optional_content(node, 'x:ele', 'ele', "x:#{EEML5_HREF}")
|
104
|
+
loc.name = optional_content(node, 'x:name', 'name', "x:#{Constants::EEML5_HREF}")
|
105
|
+
loc.latitude = optional_content(node, 'x:lat', 'lat', "x:#{Constants::EEML5_HREF}")
|
106
|
+
loc.longitude = optional_content(node, 'x:lon', 'lon', "x:#{Constants::EEML5_HREF}")
|
107
|
+
loc.elevation = optional_content(node, 'x:ele', 'ele', "x:#{Constants::EEML5_HREF}")
|
109
108
|
return loc
|
110
109
|
end
|
111
110
|
|
@@ -139,11 +138,11 @@ module Eeml
|
|
139
138
|
data = DataStream.new
|
140
139
|
raise MissingAttribute.new(node.name, 'id') if node['id'].nil?
|
141
140
|
data.identifier = node['id']
|
142
|
-
node.find('x:tag', "x:#{EEML5_HREF}").each do |tag_node|
|
141
|
+
node.find('x:tag', "x:#{Constants::EEML5_HREF}").each do |tag_node|
|
143
142
|
data.tags << tag_node.content.strip
|
144
143
|
end
|
145
144
|
|
146
|
-
value_nodes = node.find('x:value', "x:#{EEML5_HREF}")
|
145
|
+
value_nodes = node.find('x:value', "x:#{Constants::EEML5_HREF}")
|
147
146
|
raise exception_for_node(node, DataMissingValue, "Data node is missing value node.") if value_nodes.empty?
|
148
147
|
raise exception_for_node(node, DataHasMultipleValues, "Data node has multiple 'value' nodes.") if value_nodes.size > 1
|
149
148
|
|
@@ -156,7 +155,7 @@ module Eeml
|
|
156
155
|
|
157
156
|
data.add_value(value)
|
158
157
|
|
159
|
-
unit_nodes = node.find('x:unit', "x:#{EEML5_HREF}")
|
158
|
+
unit_nodes = node.find('x:unit', "x:#{Constants::EEML5_HREF}")
|
160
159
|
raise exception_for_node(node, DataHasMultipleUnits, "Data node has multiple 'unit' nodes.") if unit_nodes.size > 1
|
161
160
|
|
162
161
|
unit_node = unit_nodes.first
|
data/lib/eeml/output_registry.rb
CHANGED
@@ -4,11 +4,11 @@ require 'eeml/json_output'
|
|
4
4
|
module Eeml
|
5
5
|
class OutputRegistry # :nodoc:
|
6
6
|
#look at the given xml, build and return a new v005 or 006 parser, accordingly
|
7
|
-
def self.get_xml_output_for(version = EEML5_VERSION)
|
7
|
+
def self.get_xml_output_for(version = Constants::EEML5_VERSION)
|
8
8
|
LibXMLEemlOutputV005.new
|
9
9
|
end
|
10
10
|
|
11
|
-
def self.get_json_output_for(version = EEML5_VERSION)
|
11
|
+
def self.get_json_output_for(version = Constants::EEML5_VERSION)
|
12
12
|
JsonOutput.new
|
13
13
|
end
|
14
14
|
|
data/lib/eeml.rb
CHANGED
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eeml
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Neill Bogie, Sam Mulube
|
@@ -30,7 +30,7 @@ cert_chain:
|
|
30
30
|
yyRwZdVyDdsafg==
|
31
31
|
-----END CERTIFICATE-----
|
32
32
|
|
33
|
-
date: 2009-11-
|
33
|
+
date: 2009-11-29 00:00:00 +00:00
|
34
34
|
default_executable:
|
35
35
|
dependencies:
|
36
36
|
- !ruby/object:Gem::Dependency
|
metadata.gz.sig
CHANGED
Binary file
|