pont_del_petroli 0.1.0 → 0.2.1

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
2
  SHA1:
3
- metadata.gz: 3a91de3f6263cdf4f6d3b6adf0e90c85441bdb1d
4
- data.tar.gz: 0b4d63d3596cfe1139a8a528ee7f75e9a2a3f2f2
3
+ metadata.gz: a7169f67dbcbb83e4b7b61da0fced62acae37dab
4
+ data.tar.gz: 00b29c3295bcc69b557544414e833daa40c7e1e1
5
5
  SHA512:
6
- metadata.gz: 895cc9d2e4000c80e0e5621c7812e49e5c59cdddb6cd89c62d08de6a2d6a443ca5d5ba76064e5da5ca8ba8b89cb12bdbd6bd1bad05cafcb8d9e5aac42a9c4cb9
7
- data.tar.gz: c980061d06bb3b3a7425b105a0d977c533e868fda3a94c1cd615185deb0c78bbc0722a7da30e4b2728d4f1f1a0da070f33638de0a06cac4077822c1552dc4e92
6
+ metadata.gz: ce89a071898ca25a2392ea542e54cf64284280c25b7b87b3be54e5d9b42a8739d7316fd3e40a0380a9b85f2d0eb7c2164f930650cdd4b920d1c69842101a8903
7
+ data.tar.gz: c778d06c8778a142eda7123ab8a6f2ea32f826fe052e9e8264ecec05b49b5711c04189eedee999a7fd87cc8de690e5a14ed2cd727e279b67b4438998150f835d
Binary file
data/README.md CHANGED
@@ -18,7 +18,29 @@ Or install it yourself as:
18
18
 
19
19
  ## Usage
20
20
 
21
- TODO: Write usage instructions here
21
+ At the moment is plain simple:
22
+
23
+ require 'pont_del_petroli'
24
+
25
+ PontDelPetroli.now
26
+ returns the swell and meteo latest info
27
+
28
+ PontDelPetroli.all
29
+ returns an array with all the avaiable swell and meteo data
30
+
31
+ PontDelPetroli::Swell.now
32
+ returns the swell latest info
33
+
34
+ PontDelPetroli::Swell.all
35
+ returns an array with all the avaiable swell data
36
+
37
+ PontDelPetroli::Meteo.now
38
+ returns the Meteo latest info
39
+
40
+ PontDelPetroli::Meteo.all
41
+ returns an array with all the avaiable Meteo data
42
+
43
+
22
44
 
23
45
  ## Contributing
24
46
 
@@ -0,0 +1,42 @@
1
+ require 'open-uri'
2
+ require 'nokogiri'
3
+
4
+ module PontDelPetroli
5
+ module Meteo
6
+ class Parser
7
+ DATA_URL = 'http://www.pontdelpetroli.org/ultimes24.aspx'
8
+ CSS_ROWS_SELECTOR = '#contenidos table#ctl00_ContentPlaceHolder1_Gridview1 tr'
9
+ EMPTY_CHAR = "\u00A0"
10
+
11
+ def run
12
+ rows = Nokogiri::HTML(open(DATA_URL)).css CSS_ROWS_SELECTOR
13
+
14
+ rows.drop(1).map do |row|
15
+ extract_data_from row
16
+ end.compact
17
+ end
18
+
19
+ private
20
+
21
+ def extract_data_from row
22
+ return if is_empty? row
23
+
24
+ timestamp = Time.parse row.css('td:nth-child(1)').text
25
+ temperature = row.css('td:nth-child(2)').text
26
+ rain = row.css('td:nth-child(4)').text
27
+ wind_speed = row.css('td:nth-child(5)').text
28
+ wind_direction = row.css('td:nth-child(6)').text
29
+
30
+ Data.new timestamp, temperature, rain, wind_speed, wind_direction
31
+ end
32
+
33
+ def is_empty? row
34
+ row.css('td:nth-child(2)').text == EMPTY_CHAR
35
+ end
36
+ end
37
+
38
+ class Data < Struct.new :timestamp, :temperature, :rain, :wind_speed, :wind_direction
39
+ end
40
+
41
+ end
42
+ end
@@ -1,49 +1,38 @@
1
1
  require "pont_del_petroli/version"
2
- require 'open-uri'
3
- require 'nokogiri'
2
+ require "swell/parser"
3
+ require "meteo/parser"
4
4
 
5
5
  module PontDelPetroli
6
-
6
+
7
7
  def self.now
8
- PDPParser.new.run.first
8
+ Data.new Swell.now, Meteo.now
9
9
  end
10
10
 
11
11
  def self.all
12
- PDPParser.new.run
12
+ Data.new Swell.all, Meteo.all
13
13
  end
14
14
 
15
- class PDPParser
16
- DATA_URL = 'http://www.pontdelpetroli.org/oceano.aspx'
17
- CSS_ROWS_SELECTOR = '#contenidos table#ctl00_ContentPlaceHolder1_Gridview1 tr'
18
- EMPTY_CHAR = "\u00A0"
19
-
20
- def run
21
- rows = Nokogiri::HTML(open(DATA_URL)).css CSS_ROWS_SELECTOR
22
-
23
- rows.drop(1).map do |row|
24
- extract_data_from row
25
- end.compact
26
- end
27
-
28
- private
29
-
30
- def extract_data_from row
31
- return if is_empty? row
32
-
33
- timestamp = Time.parse row.css('td:nth-child(1)').text
34
- height = row.css('td:nth-child(4)').text
35
- direction = row.css('td:nth-child(5)').text
36
- period = row.css('td:nth-child(6)').text
15
+ class Data < Struct.new :swell_data, :meteo_data
16
+ end
37
17
 
38
- SwellData.new timestamp, height, direction, period
18
+ module Swell
19
+ def self.now
20
+ Parser.new.run.first
39
21
  end
40
22
 
41
- def is_empty? row
42
- row.css('td:nth-child(4)').text == EMPTY_CHAR
23
+ def self.all
24
+ Parser.new.run
43
25
  end
44
26
  end
45
27
 
46
- class SwellData < Struct.new :timestamp, :height, :direction, :period
28
+ module Meteo
29
+ def self.now
30
+ Parser.new.run.first
31
+ end
32
+
33
+ def self.all
34
+ Parser.new.run
35
+ end
47
36
  end
48
37
 
49
38
  end
@@ -1,3 +1,3 @@
1
1
  module PontDelPetroli
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.1"
3
3
  end
@@ -0,0 +1,41 @@
1
+ require 'open-uri'
2
+ require 'nokogiri'
3
+
4
+ module PontDelPetroli
5
+ module Swell
6
+ class Parser
7
+ DATA_URL = 'http://www.pontdelpetroli.org/oceano.aspx'
8
+ CSS_ROWS_SELECTOR = '#contenidos table#ctl00_ContentPlaceHolder1_Gridview1 tr'
9
+ EMPTY_CHAR = "\u00A0"
10
+
11
+ def run
12
+ rows = Nokogiri::HTML(open(DATA_URL)).css CSS_ROWS_SELECTOR
13
+
14
+ rows.drop(1).map do |row|
15
+ extract_data_from row
16
+ end.compact
17
+ end
18
+
19
+ private
20
+
21
+ def extract_data_from row
22
+ return if is_empty? row
23
+
24
+ timestamp = Time.parse row.css('td:nth-child(1)').text
25
+ height = row.css('td:nth-child(4)').text
26
+ direction = row.css('td:nth-child(5)').text
27
+ period = row.css('td:nth-child(6)').text
28
+
29
+ Data.new timestamp, height, direction, period
30
+ end
31
+
32
+ def is_empty? row
33
+ row.css('td:nth-child(4)').text == EMPTY_CHAR
34
+ end
35
+ end
36
+
37
+ class Data < Struct.new :timestamp, :height, :direction, :period
38
+ end
39
+
40
+ end
41
+ end
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
  spec.email = ["rgalindo33@hotmail.com"]
11
11
  spec.summary = %q{Real time PontdelPetroli buoy information.}
12
12
  spec.description = %q{Fetches the data from Badalonas buoy and gives it as a ruby object.}
13
- spec.homepage = "http://rgalindo33.github.io/pont_del_petroli"
13
+ spec.homepage = "https://github.com/rgalindo33/pont_del_petroli"
14
14
  spec.license = "MIT"
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0")
Binary file
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe PontDelPetroli::Meteo::Parser do
4
+
5
+ let(:subject) { PontDelPetroli::Meteo::Parser.new }
6
+
7
+ describe '#run' do
8
+
9
+ let(:data) { subject.run }
10
+
11
+ it 'returns an array' do
12
+ expect(data).to be_an Array
13
+ end
14
+
15
+ it 'objects of the array are MeteoData' do
16
+ expect(data.first).to be_a PontDelPetroli::Meteo::Data
17
+ end
18
+
19
+ it 'returns only meaningfull data' do
20
+ expect(data.all?).to be true
21
+ end
22
+ end
23
+
24
+ end
@@ -1,36 +1,51 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe PontDelPetroli::PDPParser do
3
+ describe PontDelPetroli do
4
+ let(:subject) { PontDelPetroli }
4
5
 
5
- let(:subject) { PontDelPetroli::PDPParser.new }
6
+ describe '.now' do
7
+ it 'merges swell data and meteo data in a Data struct' do
8
+ expect(subject.now).to respond_to :swell_data
9
+ expect(subject.now).to respond_to :meteo_data
10
+ end
11
+ end
6
12
 
7
- describe '#run' do
13
+ describe '.all' do
14
+ it 'merges swell data and meteo data in a Data struct' do
15
+ expect(subject.all).to respond_to :swell_data
16
+ expect(subject.all).to respond_to :meteo_data
17
+ end
18
+ end
19
+ end
8
20
 
9
- let(:data) { subject.run }
21
+ describe PontDelPetroli::Swell do
22
+ let(:subject) { PontDelPetroli::Swell }
10
23
 
11
- it 'parses the site' do
12
- expect(data).to be_an Array
24
+ describe '.now' do
25
+ it 'returns the latest buoy data' do
26
+ expect(subject.now).to be_a PontDelPetroli::Swell::Data
13
27
  end
28
+ end
14
29
 
15
- it 'returns only meaningfull data' do
16
- expect(data.all?).to be true
30
+ describe 'all' do
31
+ it 'returns all data available' do
32
+ expect(subject.all).to be_a Array
17
33
  end
18
34
  end
19
-
20
35
  end
21
36
 
22
- describe PontDelPetroli do
23
- let(:subject) { PontDelPetroli }
37
+ describe PontDelPetroli::Meteo do
38
+ let(:subject) { PontDelPetroli::Meteo }
24
39
 
25
40
  describe '.now' do
26
41
  it 'returns the latest buoy data' do
27
- expect(subject.now).to be_a PontDelPetroli::SwellData
42
+ expect(subject.now).to be_a PontDelPetroli::Meteo::Data
28
43
  end
29
44
  end
30
45
 
31
- describe '.all' do
46
+ describe 'all' do
32
47
  it 'returns all data available' do
33
48
  expect(subject.all).to be_a Array
34
49
  end
35
50
  end
36
- end
51
+ end
@@ -1,4 +1,6 @@
1
1
  $LOAD_PATH.unshift("#{File.dirname(__FILE__)}/../lib")
2
2
 
3
3
  require 'pry'
4
- require 'pont_del_petroli'
4
+ require 'pont_del_petroli'
5
+ require 'swell/parser'
6
+ require 'meteo/parser'
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe PontDelPetroli::Swell::Parser do
4
+
5
+ let(:subject) { PontDelPetroli::Swell::Parser.new }
6
+
7
+ describe '#run' do
8
+
9
+ let(:data) { subject.run }
10
+
11
+ it 'returns an array' do
12
+ expect(data).to be_an Array
13
+ end
14
+
15
+ it 'objects of the array are MeteoData' do
16
+ expect(data.first).to be_a PontDelPetroli::Swell::Data
17
+ end
18
+
19
+ it 'returns only meaningfull data' do
20
+ expect(data.all?).to be true
21
+ end
22
+ end
23
+
24
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pont_del_petroli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Raul Galindo
@@ -59,17 +59,23 @@ executables: []
59
59
  extensions: []
60
60
  extra_rdoc_files: []
61
61
  files:
62
+ - ".DS_Store"
62
63
  - ".gitignore"
63
64
  - Gemfile
64
65
  - LICENSE.txt
65
66
  - README.md
66
67
  - Rakefile
68
+ - lib/meteo/parser.rb
67
69
  - lib/pont_del_petroli.rb
68
70
  - lib/pont_del_petroli/version.rb
71
+ - lib/swell/parser.rb
69
72
  - pont_del_petroli.gemspec
73
+ - spec/.DS_Store
74
+ - spec/meteo/parser_spec.rb
70
75
  - spec/pont_del_petroli_spec.rb
71
76
  - spec/spec_helper.rb
72
- homepage: http://rgalindo33.github.io/pont_del_petroli
77
+ - spec/swell/parser_spec.rb
78
+ homepage: https://github.com/rgalindo33/pont_del_petroli
73
79
  licenses:
74
80
  - MIT
75
81
  metadata: {}
@@ -94,5 +100,8 @@ signing_key:
94
100
  specification_version: 4
95
101
  summary: Real time PontdelPetroli buoy information.
96
102
  test_files:
103
+ - spec/.DS_Store
104
+ - spec/meteo/parser_spec.rb
97
105
  - spec/pont_del_petroli_spec.rb
98
106
  - spec/spec_helper.rb
107
+ - spec/swell/parser_spec.rb