dwml 1.1.5 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 680464c5b884645cefdd91a8145f0e9edd11c849
4
- data.tar.gz: c9d0aeda8b70be31a23ba187e621dc8cf954b574
2
+ SHA256:
3
+ metadata.gz: 7ec231f50c9554e9786904184ed8882282e7c18d9c2bd4468c2558357f97c67a
4
+ data.tar.gz: 7b969e854e28bd5b8cdf8cc1eaa0f32b6edea0155598a8ed66454a7290c9e5f0
5
5
  SHA512:
6
- metadata.gz: 781acaf403606cf754d610e6f9014c7b02b7584595c9e4423a75a0654dea3af288680f2a2043dd5e0697a5a75ceea841163ddbffc3b33b2385be226bc78c97fa
7
- data.tar.gz: 75595228a6261176efcdbcf7ac2f398d9ba98a33c1da861d6430d8738d46957e405e1a79871f933170d1413af082909bf7b75aebf754d6ee17badc1ab4164e87
6
+ metadata.gz: f526d85f696e9beda524e940a7fdd7b0483675794d71fbd986b516c57140fae2bd647f92e8cbf37130bb2cab3608d728f59eee72085cbce25e9c4fc8b4935657
7
+ data.tar.gz: edaffa8afadbcd022e4f2a906461b8cd9a432b24766aeacbccfbea5cf891ee85995f01b51d4586abcc3b9fef36cfbf374409c7c32a902366f70d8f7a232225ba
data/.gitignore CHANGED
@@ -1,4 +1,8 @@
1
1
  Gemfile.lock
2
2
  .ruby-version
3
+ .tool-versions
4
+ .yardoc/*
5
+ doc/*
3
6
  coverage/*
4
- *.gem
7
+ *.gem
8
+ .byebug_history
@@ -0,0 +1,8 @@
1
+ language: ruby
2
+
3
+ ruby:
4
+ - '2.5.7'
5
+ - '2.6.5'
6
+ - '2.7.0'
7
+
8
+ script: bundle exec rspec
data/Gemfile CHANGED
@@ -1,10 +1,15 @@
1
1
  source 'https://rubygems.org'
2
2
  gemspec
3
3
 
4
+ group :development do
5
+ gem 'yard', '~>0.9'
6
+ end
7
+
4
8
  group :test do
5
- gem 'simplecov', '~>0.8.2', :require => false
6
- gem 'coveralls', :require => false
7
- gem 'webmock', '~>1.17.4'
8
- gem 'vcr', '~>2.9.0'
9
- gem 'rspec', '~>2.14.0'
9
+ gem 'simplecov', '~>0.17', :require => false
10
+ gem 'rspec', '~>3.9'
11
+ end
12
+
13
+ group :development, :test do
14
+ gem 'byebug'
10
15
  end
data/README.md CHANGED
@@ -1,8 +1,96 @@
1
- dwml
2
- ====
1
+ # dwml [![Gem Version](https://badge.fury.io/rb/dwml.svg)](http://badge.fury.io/rb/dwml) [![Build Status](https://secure.travis-ci.org/alakra/dwml.svg?branch=master)](http://travis-ci.org/alakra/dwml) [![Code Climate](https://codeclimate.com/github/alakra/dwml/badges/gpa.svg)](https://codeclimate.com/github/alakra/dwml)
3
2
 
4
- [![Gem Version](https://badge.fury.io/rb/dwml.svg)](http://badge.fury.io/rb/dwml)
5
- [![Dependency Status](https://gemnasium.com/alakra/dwml.svg)](https://gemnasium.com/alakra/dwml)
6
- [![Code Climate](https://codeclimate.com/github/alakra/dwml/badges/gpa.svg)](https://codeclimate.com/github/alakra/dwml)
3
+ A parser for NOAA's Digital Weather Markup Language (DWML).
7
4
 
8
- A parser for NOAA's Digital Weather Markup Language (DWML)
5
+ ## Requirements
6
+
7
+ * ruby >= `2.5.x`
8
+
9
+ ## Usage
10
+
11
+ In your `Gemfile`:
12
+
13
+ ```ruby
14
+ gem 'dwml', '~>1.2'
15
+ ```
16
+
17
+ In your application:
18
+
19
+ ```ruby
20
+ output = DWML.new(nokogiri_xml_doc).process
21
+ ```
22
+
23
+ The output will look something like this:
24
+
25
+ ```ruby
26
+ {:product=>
27
+ {:title=>"NOAA's National Weather Service Forecast Data",
28
+ :field=>"meteorological",
29
+ :category=>"forecast",
30
+ :creation_date=>Thu, 05 Mar 2020 18:49:42 UTC +00:00},
31
+ :source=>
32
+ {:product_center=>
33
+ "Meteorological Development Laboratory - Product Generation Branch",
34
+ :more_information=>"https://graphical.weather.gov/xml/",
35
+ :disclaimer=>"http://www.nws.noaa.gov/disclaimer.html",
36
+ :credit=>"https://www.weather.gov/",
37
+ :credit_logo=>"https://www.weather.gov/logorequest",
38
+ :feedback=>"https://www.weather.gov/contact"},
39
+ :parameters=>
40
+ {"point1"=>
41
+ {:latitude=>38.99,
42
+ :longitude=>-77.01,
43
+ :temperature=>
44
+ {:maximum=>
45
+ {:name=>"Daily Maximum Temperature",
46
+ :values=>
47
+ [{:value=>48.0,
48
+ :start_time=>Sat, 07 Mar 2020 12:00:00 UTC +00:00,
49
+ :unit=>"Fahrenheit",
50
+ :end_time=>Sun, 08 Mar 2020 00:00:00 UTC +00:00},
51
+ {:value=>59.0,
52
+ :start_time=>Sun, 08 Mar 2020 12:00:00 UTC +00:00,
53
+ :unit=>"Fahrenheit",
54
+ :end_time=>Mon, 09 Mar 2020 00:00:00 UTC +00:00},
55
+ {:value=>68.0,
56
+ :start_time=>Mon, 09 Mar 2020 12:00:00 UTC +00:00,
57
+ :unit=>"Fahrenheit",
58
+ :end_time=>Tue, 10 Mar 2020 00:00:00 UTC +00:00},
59
+ {:value=>66.0,
60
+ :start_time=>Tue, 10 Mar 2020 12:00:00 UTC +00:00,
61
+ :unit=>"Fahrenheit",
62
+ :end_time=>Wed, 11 Mar 2020 00:00:00 UTC +00:00},
63
+ {:value=>62.0,
64
+ :start_time=>Wed, 11 Mar 2020 12:00:00 UTC +00:00,
65
+ :unit=>"Fahrenheit",
66
+ :end_time=>Thu, 12 Mar 2020 00:00:00 UTC +00:00}]},
67
+ :minimum=>
68
+ {:name=>"Daily Minimum Temperature",
69
+ :values=>
70
+ [{:value=>35.0,
71
+ :start_time=>Sat, 07 Mar 2020 00:00:00 UTC +00:00,
72
+ :unit=>"Fahrenheit",
73
+ :end_time=>Sat, 07 Mar 2020 13:00:00 UTC +00:00},
74
+ {:value=>31.0,
75
+ :start_time=>Sun, 08 Mar 2020 01:00:00 UTC +00:00,
76
+ :unit=>"Fahrenheit",
77
+ :end_time=>Sun, 08 Mar 2020 13:00:00 UTC +00:00},
78
+ {:value=>40.0,
79
+ :start_time=>Mon, 09 Mar 2020 00:00:00 UTC +00:00,
80
+ :unit=>"Fahrenheit",
81
+ :end_time=>Mon, 09 Mar 2020 13:00:00 UTC +00:00},
82
+ {:value=>51.0,
83
+ :start_time=>Tue, 10 Mar 2020 00:00:00 UTC +00:00,
84
+ :unit=>"Fahrenheit",
85
+ :end_time=>Tue, 10 Mar 2020 13:00:00 UTC +00:00},
86
+ {:value=>48.0,
87
+ :start_time=>Wed, 11 Mar 2020 00:00:00 UTC +00:00,
88
+ :unit=>"Fahrenheit",
89
+ :end_time=>Wed, 11 Mar 2020 13:00:00 UTC +00:00}]}}}}}
90
+ ```
91
+
92
+ ## FAQ
93
+
94
+ ### Where do I get DWML documents from?
95
+
96
+ You can download them directly from the [National Digital Forecast Database (NDFD) Digital Weather Markup Language (DWML) Generator](https://graphical.weather.gov/xml/SOAP_server/ndfdXML.htm).
@@ -20,11 +20,10 @@ Gem::Specification.new do |s|
20
20
 
21
21
  s.extra_rdoc_files = ['README.md']
22
22
 
23
- s.add_runtime_dependency 'nokogiri', '>= 1.6.6'
24
- s.add_runtime_dependency 'multi_json', '>= 1.11.1'
25
- s.add_runtime_dependency 'activesupport', '>= 4.2.2'
23
+ s.add_runtime_dependency 'nokogiri', '>= 1.6'
24
+ s.add_runtime_dependency 'activesupport', '>= 5.2'
26
25
 
27
- s.required_ruby_version = '>= 1.9.3'
26
+ s.required_ruby_version = '>= 2.5'
28
27
 
29
28
  s.files = `git ls-files`.split("\n")
30
29
  s.test_files = `git ls-files -- spec/*`.split("\n")
@@ -1,25 +1,121 @@
1
- require 'multi_json'
2
-
1
+ require 'dwml/error'
3
2
  require 'dwml/head_extractor'
4
3
  require 'dwml/data_extractor'
5
4
 
5
+
6
+ ##
7
+ # The DWML class is the main entrypoint for processing DWML Nokogiri
8
+ # XML documents.
6
9
  #
7
- # Note: See http://graphical.weather.gov/xml/mdl/XML/Design/MDL_XML_Design.pdf
10
+ # See
11
+ # http://graphical.weather.gov/xml/mdl/XML/Design/MDL_XML_Design.pdf
8
12
  # for authoritative type definitions
9
- ################################################################################
10
-
13
+ #
14
+ # == Usage
15
+ #
16
+ # output = DWML.new(nokogiri_xml_doc).process
17
+ #
11
18
  class DWML
12
19
  attr_reader :output, :xmldoc
13
20
 
21
+ ##
22
+ # Creates a new instance of the +DWML+ class.
23
+ #
24
+ # @param Nokogiri::XML::Document
25
+ # @return [DWML]
14
26
  def initialize(xmldoc)
15
27
  @xmldoc = xmldoc
16
28
  @output = {}
17
29
  end
18
30
 
31
+ ##
32
+ # Processes the associated XML document with +DWML+ object and
33
+ # returns a detailed hash of the weather metrics and also stores it
34
+ # in the +@output+ instance variable.
35
+ #
36
+ # @return [Hash]
37
+ #
38
+ # == Hash Structure
39
+ #
40
+ # The returned hash will have a consistent structure under
41
+ # +:product+ and +:source+ keys. The +:parameters+ value will vary
42
+ # depending on the original XML/DWML document that is passed to
43
+ # +DWML.new+.
44
+ #
45
+ # == Example Output
46
+ #
47
+ # {:product=>
48
+ # {:title=>"NOAA's National Weather Service Forecast Data",
49
+ # :field=>"meteorological",
50
+ # :category=>"forecast",
51
+ # :creation_date=>Thu, 05 Mar 2020 18:49:42 UTC +00:00},
52
+ # :source=>
53
+ # {:product_center=>
54
+ # "Meteorological Development Laboratory - Product Generation Branch",
55
+ # :more_information=>"https://graphical.weather.gov/xml/",
56
+ # :disclaimer=>"http://www.nws.noaa.gov/disclaimer.html",
57
+ # :credit=>"https://www.weather.gov/",
58
+ # :credit_logo=>"https://www.weather.gov/logorequest",
59
+ # :feedback=>"https://www.weather.gov/contact"},
60
+ # :parameters=>
61
+ # {"point1"=>
62
+ # {:latitude=>38.99,
63
+ # :longitude=>-77.01,
64
+ # :temperature=>
65
+ # {:maximum=>
66
+ # {:name=>"Daily Maximum Temperature",
67
+ # :values=>
68
+ # [{:value=>48.0,
69
+ # :start_time=>Sat, 07 Mar 2020 12:00:00 UTC +00:00,
70
+ # :unit=>"Fahrenheit",
71
+ # :end_time=>Sun, 08 Mar 2020 00:00:00 UTC +00:00},
72
+ # {:value=>59.0,
73
+ # :start_time=>Sun, 08 Mar 2020 12:00:00 UTC +00:00,
74
+ # :unit=>"Fahrenheit",
75
+ # :end_time=>Mon, 09 Mar 2020 00:00:00 UTC +00:00},
76
+ # {:value=>68.0,
77
+ # :start_time=>Mon, 09 Mar 2020 12:00:00 UTC +00:00,
78
+ # :unit=>"Fahrenheit",
79
+ # :end_time=>Tue, 10 Mar 2020 00:00:00 UTC +00:00},
80
+ # {:value=>66.0,
81
+ # :start_time=>Tue, 10 Mar 2020 12:00:00 UTC +00:00,
82
+ # :unit=>"Fahrenheit",
83
+ # :end_time=>Wed, 11 Mar 2020 00:00:00 UTC +00:00},
84
+ # {:value=>62.0,
85
+ # :start_time=>Wed, 11 Mar 2020 12:00:00 UTC +00:00,
86
+ # :unit=>"Fahrenheit",
87
+ # :end_time=>Thu, 12 Mar 2020 00:00:00 UTC +00:00}]},
88
+ # :minimum=>
89
+ # {:name=>"Daily Minimum Temperature",
90
+ # :values=>
91
+ # [{:value=>35.0,
92
+ # :start_time=>Sat, 07 Mar 2020 00:00:00 UTC +00:00,
93
+ # :unit=>"Fahrenheit",
94
+ # :end_time=>Sat, 07 Mar 2020 13:00:00 UTC +00:00},
95
+ # {:value=>31.0,
96
+ # :start_time=>Sun, 08 Mar 2020 01:00:00 UTC +00:00,
97
+ # :unit=>"Fahrenheit",
98
+ # :end_time=>Sun, 08 Mar 2020 13:00:00 UTC +00:00},
99
+ # {:value=>40.0,
100
+ # :start_time=>Mon, 09 Mar 2020 00:00:00 UTC +00:00,
101
+ # :unit=>"Fahrenheit",
102
+ # :end_time=>Mon, 09 Mar 2020 13:00:00 UTC +00:00},
103
+ # {:value=>51.0,
104
+ # :start_time=>Tue, 10 Mar 2020 00:00:00 UTC +00:00,
105
+ # :unit=>"Fahrenheit",
106
+ # :end_time=>Tue, 10 Mar 2020 13:00:00 UTC +00:00},
107
+ # {:value=>48.0,
108
+ # :start_time=>Wed, 11 Mar 2020 00:00:00 UTC +00:00,
109
+ # :unit=>"Fahrenheit",
110
+ # :end_time=>Wed, 11 Mar 2020 13:00:00 UTC +00:00}]}}}}}
19
111
  def process
20
- build_head
21
- build_data
22
- output
112
+ if @xmldoc.is_a?(Nokogiri::XML::Document)
113
+ build_head
114
+ build_data
115
+ output
116
+ else
117
+ raise DWML::NokogiriDocumentError, "The input is not an Nokogiri::XML::Document"
118
+ end
23
119
  end
24
120
 
25
121
  protected
@@ -0,0 +1,7 @@
1
+ class DWML
2
+ class Error < ::StandardError
3
+ end
4
+
5
+ class NokogiriDocumentError < Error
6
+ end
7
+ end
@@ -1,3 +1,5 @@
1
+ require 'active_support/time'
2
+
1
3
  class DWML
2
4
  class HeadExtractor
3
5
  attr_reader :output, :element
@@ -1,3 +1,3 @@
1
1
  class DWML
2
- VERSION = "1.1.5"
2
+ VERSION = "1.2.0"
3
3
  end
@@ -0,0 +1,70 @@
1
+ <?xml version="1.0"?>
2
+ <dwml version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://graphical.weather.gov/xml/DWMLgen/schema/DWML.xsd">
3
+ <head>
4
+ <product srsName="WGS 1984" concise-name="time-series" operational-mode="official">
5
+ <title>NOAA's National Weather Service Forecast Data</title>
6
+ <field>meteorological</field>
7
+ <category>forecast</category>
8
+ <creation-date refresh-frequency="PT1H">2020-03-05T18:49:42Z</creation-date>
9
+ </product>
10
+ <source>
11
+ <more-information>https://graphical.weather.gov/xml/</more-information>
12
+ <production-center>Meteorological Development Laboratory<sub-center>Product Generation Branch</sub-center></production-center>
13
+ <disclaimer>http://www.nws.noaa.gov/disclaimer.html</disclaimer>
14
+ <credit>https://www.weather.gov/</credit>
15
+ <credit-logo>https://www.weather.gov/logorequest</credit-logo>
16
+ <feedback>https://www.weather.gov/contact</feedback>
17
+ </source>
18
+ </head>
19
+ <data>
20
+ <location>
21
+ <location-key>point1</location-key>
22
+ <point latitude="38.99" longitude="-77.01"/>
23
+ </location>
24
+ <moreWeatherInformation applicable-location="point1">https://forecast-v3.weather.gov/point/38.99,-77.01</moreWeatherInformation>
25
+ <time-layout time-coordinate="local" summarization="none">
26
+ <layout-key>k-p24h-n5-1</layout-key>
27
+ <start-valid-time>2020-03-07T07:00:00-05:00</start-valid-time>
28
+ <end-valid-time>2020-03-07T19:00:00-05:00</end-valid-time>
29
+ <start-valid-time>2020-03-08T08:00:00-04:00</start-valid-time>
30
+ <end-valid-time>2020-03-08T20:00:00-04:00</end-valid-time>
31
+ <start-valid-time>2020-03-09T08:00:00-04:00</start-valid-time>
32
+ <end-valid-time>2020-03-09T20:00:00-04:00</end-valid-time>
33
+ <start-valid-time>2020-03-10T08:00:00-04:00</start-valid-time>
34
+ <end-valid-time>2020-03-10T20:00:00-04:00</end-valid-time>
35
+ <start-valid-time>2020-03-11T08:00:00-04:00</start-valid-time>
36
+ <end-valid-time>2020-03-11T20:00:00-04:00</end-valid-time>
37
+ </time-layout>
38
+ <time-layout time-coordinate="local" summarization="none">
39
+ <layout-key>k-p24h-n5-2</layout-key>
40
+ <start-valid-time>2020-03-06T19:00:00-05:00</start-valid-time>
41
+ <end-valid-time>2020-03-07T08:00:00-05:00</end-valid-time>
42
+ <start-valid-time>2020-03-07T20:00:00-05:00</start-valid-time>
43
+ <end-valid-time>2020-03-08T09:00:00-04:00</end-valid-time>
44
+ <start-valid-time>2020-03-08T20:00:00-04:00</start-valid-time>
45
+ <end-valid-time>2020-03-09T09:00:00-04:00</end-valid-time>
46
+ <start-valid-time>2020-03-09T20:00:00-04:00</start-valid-time>
47
+ <end-valid-time>2020-03-10T09:00:00-04:00</end-valid-time>
48
+ <start-valid-time>2020-03-10T20:00:00-04:00</start-valid-time>
49
+ <end-valid-time>2020-03-11T09:00:00-04:00</end-valid-time>
50
+ </time-layout>
51
+ <parameters applicable-location="point1">
52
+ <temperature type="maximum" units="Fahrenheit" time-layout="k-p24h-n5-1">
53
+ <name>Daily Maximum Temperature</name>
54
+ <value>48</value>
55
+ <value>59</value>
56
+ <value>68</value>
57
+ <value>66</value>
58
+ <value>62</value>
59
+ </temperature>
60
+ <temperature type="minimum" units="Fahrenheit" time-layout="k-p24h-n5-2">
61
+ <name>Daily Minimum Temperature</name>
62
+ <value>35</value>
63
+ <value>31</value>
64
+ <value>40</value>
65
+ <value>51</value>
66
+ <value>48</value>
67
+ </temperature>
68
+ </parameters>
69
+ </data>
70
+ </dwml>
@@ -0,0 +1,61 @@
1
+ require 'spec_helper'
2
+ require 'nokogiri'
3
+
4
+ describe DWML do
5
+ let(:basic_xml) { File.read("spec/docs/basic.xml") }
6
+
7
+ describe ".new" do
8
+ it "creates a new DWML object" do
9
+ doc = Nokogiri::XML.parse(basic_xml)
10
+ expect(DWML.new(doc)).to be_a_kind_of(DWML)
11
+ end
12
+ end
13
+
14
+ describe "#process" do
15
+ it "processes an xml document successfully" do
16
+ doc = Nokogiri::XML.parse(basic_xml)
17
+ output = DWML.new(doc).process
18
+
19
+ expect(output).to be_a_kind_of(Hash)
20
+ expect(output).to have_key(:product)
21
+ expect(output).to have_key(:source)
22
+ expect(output).to have_key(:parameters)
23
+ end
24
+
25
+ it "attempts to process a non-xml document and fails" do
26
+ expect {
27
+ DWML.new("").process
28
+ }.to raise_error(DWML::NokogiriDocumentError)
29
+ end
30
+ end
31
+
32
+ describe "attributes" do
33
+ it "can read the original xml document" do
34
+ doc = Nokogiri::XML.parse(basic_xml)
35
+ output = DWML.new(doc).process
36
+
37
+ params = output[:parameters]
38
+
39
+ expect(params["point1"][:latitude]).to eq(38.99)
40
+ expect(params["point1"][:longitude]).to eq(-77.01)
41
+
42
+ temperatures = params["point1"][:temperature]
43
+
44
+ expect(temperatures[:maximum][:name]).to eq("Daily Maximum Temperature")
45
+ max_values = temperatures[:maximum][:values].map {|x| x[:value] }
46
+ expect(max_values).to eq([48, 59, 68, 66, 62])
47
+
48
+ expect(temperatures[:minimum][:name]).to eq("Daily Minimum Temperature")
49
+ min_values = temperatures[:minimum][:values].map {|x| x[:value] }
50
+ expect(min_values).to eq([35, 31, 40, 51, 48])
51
+ end
52
+
53
+ it "can read the cached output" do
54
+ doc = Nokogiri::XML.parse(basic_xml)
55
+ dwml = DWML.new(doc)
56
+ output = dwml.process
57
+
58
+ expect(dwml.output).to eq(output)
59
+ end
60
+ end
61
+ end
@@ -1,3 +1,4 @@
1
+ require 'byebug'
1
2
  require 'dwml'
2
3
 
3
4
  # This file was generated by the `rspec --init` command. Conventionally, all
@@ -7,7 +8,6 @@ require 'dwml'
7
8
  #
8
9
  # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
9
10
  RSpec.configure do |config|
10
- config.treat_symbols_as_metadata_keys_with_true_values = true
11
11
  config.run_all_when_everything_filtered = true
12
12
  config.filter_run :focus
13
13
 
@@ -16,4 +16,6 @@ RSpec.configure do |config|
16
16
  # the seed, which is printed after each run.
17
17
  # --seed 1234
18
18
  config.order = 'random'
19
+
20
+ Time.zone = "UTC"
19
21
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dwml
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.5
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Angelo Lakra
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-17 00:00:00.000000000 Z
11
+ date: 2020-03-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -16,44 +16,29 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 1.6.6
19
+ version: '1.6'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 1.6.6
27
- - !ruby/object:Gem::Dependency
28
- name: multi_json
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: 1.11.1
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: 1.11.1
26
+ version: '1.6'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: activesupport
43
29
  requirement: !ruby/object:Gem::Requirement
44
30
  requirements:
45
31
  - - ">="
46
32
  - !ruby/object:Gem::Version
47
- version: 4.2.2
33
+ version: '5.2'
48
34
  type: :runtime
49
35
  prerelease: false
50
36
  version_requirements: !ruby/object:Gem::Requirement
51
37
  requirements:
52
38
  - - ">="
53
39
  - !ruby/object:Gem::Version
54
- version: 4.2.2
55
- description: |2
56
- Parses DWML and outputs it into ruby arrays/hashes
40
+ version: '5.2'
41
+ description: " Parses DWML and outputs it into ruby arrays/hashes\n"
57
42
  email:
58
43
  - angelo.lakra@gmail.com
59
44
  executables: []
@@ -63,20 +48,21 @@ extra_rdoc_files:
63
48
  files:
64
49
  - ".gitignore"
65
50
  - ".rspec"
51
+ - ".travis.yml"
66
52
  - Gemfile
67
53
  - LICENSE
68
54
  - README.md
69
55
  - dwml.gemspec
70
56
  - lib/dwml.rb
71
57
  - lib/dwml/data_extractor.rb
58
+ - lib/dwml/error.rb
72
59
  - lib/dwml/head_extractor.rb
73
60
  - lib/dwml/location.rb
74
61
  - lib/dwml/parameter_extractor.rb
75
62
  - lib/dwml/time_layout.rb
76
63
  - lib/dwml/version.rb
77
- - spec/lib/dwml/location_spec.rb
78
- - spec/lib/dwml/parameter_extractor_spec.rb
79
- - spec/lib/dwml/time_layout_spec.rb
64
+ - spec/docs/basic.xml
65
+ - spec/lib/dwml_spec.rb
80
66
  - spec/spec_helper.rb
81
67
  homepage: https://github.com/alakra/dwml
82
68
  licenses:
@@ -90,7 +76,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
90
76
  requirements:
91
77
  - - ">="
92
78
  - !ruby/object:Gem::Version
93
- version: 1.9.3
79
+ version: '2.5'
94
80
  required_rubygems_version: !ruby/object:Gem::Requirement
95
81
  requirements:
96
82
  - - ">="
@@ -98,12 +84,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
98
84
  version: '0'
99
85
  requirements: []
100
86
  rubyforge_project:
101
- rubygems_version: 2.4.5
87
+ rubygems_version: 2.7.6.2
102
88
  signing_key:
103
89
  specification_version: 4
104
90
  summary: A parser for NOAA's Digital Weather Markup Language (DWML)
105
91
  test_files:
106
- - spec/lib/dwml/location_spec.rb
107
- - spec/lib/dwml/parameter_extractor_spec.rb
108
- - spec/lib/dwml/time_layout_spec.rb
92
+ - spec/docs/basic.xml
93
+ - spec/lib/dwml_spec.rb
109
94
  - spec/spec_helper.rb
@@ -1,24 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe DWML::Location do
4
- describe ".extract" do
5
- end
6
-
7
- context "after initialization" do
8
- describe "#element" do
9
- it "returns original element"
10
- end
11
-
12
- describe "#location_key" do
13
- it "returns the location_key"
14
- end
15
-
16
- describe "#latitude" do
17
- it "returns the correct latitude"
18
- end
19
-
20
- describe "#longitude" do
21
- it "returns the correct longitude"
22
- end
23
- end
24
- end
@@ -1,81 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe DWML::ParameterExtractor do
4
- describe "after initialize" do
5
- describe "#element" do
6
- it "returns the original XML element"
7
- end
8
-
9
- describe "#location" do
10
- it "returns the location"
11
- end
12
-
13
- describe "#time_layouts" do
14
- it "returns time layouts"
15
- end
16
-
17
- describe "#output" do
18
- it "returns a pair of lat/longs"
19
- end
20
- end
21
-
22
- describe "#process" do
23
- context "for temperatures" do
24
- it "returns valid temperatures with associated timestamps"
25
- end
26
-
27
- context "for extracting precipitation" do
28
- it "returns valid precipitation with associated timestamps"
29
- end
30
-
31
- context "for extracting wind speed" do
32
- it "returns valid wind speed with associated timestamps"
33
- end
34
-
35
- context "for extracting wind direction" do
36
- it "returns valid wind direction with associated timestamps"
37
- end
38
-
39
- context "for extracting cloud cover" do
40
- it "returns valid cloud cover with associated timestamps"
41
- end
42
-
43
- context "for extracting probability of precipitation" do
44
- it "returns valid probability of precipitation with associated timestamps"
45
- end
46
-
47
- context "for extracting fire weather" do
48
- it "returns valid fire weather with associated timestamps"
49
- end
50
-
51
- context "for extracting convective hazard" do
52
- it "returns valid convective hazard with associated timestamps"
53
- end
54
-
55
- context "for extracting climate anomaly" do
56
- it "returns valid climate anomaly with associated timestamps"
57
- end
58
-
59
- context "for extracting humidity" do
60
- it "returns valid humidity with associated timestamps"
61
- end
62
-
63
- context "for extracting weather" do
64
- it "returns valid weather with associated timestamps"
65
- end
66
-
67
- context "for extracting conditions icons" do
68
- it "returns valid conditions icons with associated timestamps"
69
- end
70
-
71
- context "for extracting hazards" do
72
- it "returns valid hazards with associated timestamps"
73
- end
74
-
75
- context "for extracting water state" do
76
- it "returns valid water state with associated timestamps"
77
- end
78
-
79
-
80
- end
81
- end
@@ -1,27 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe DWML::TimeLayout do
4
- describe ".extract" do
5
- it "returns a list of parsed XML elements"
6
- end
7
-
8
- describe "#element" do
9
- it "returns the original XML element"
10
- end
11
-
12
- describe "#time_coordinate" do
13
- it "returns the extracted time coordinate"
14
- end
15
-
16
- describe "#summarization" do
17
- it "returns the extracted summarization"
18
- end
19
-
20
- describe "#layout_key" do
21
- it "returns the extracted layout_key"
22
- end
23
-
24
- describe "#valid_times" do
25
- it "returns the valid start and stop times as a ValidTime"
26
- end
27
- end