pla 0.1.1 → 0.2.0

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.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +14 -3
  3. data/lib/pla.rb +60 -0
  4. data/pla.gemspec +1 -1
  5. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 273a1bcd783512a908076b9d4bd1bda7547dd3c5
4
- data.tar.gz: b48cfa6a31e46cbbaf9e8fdc4164d4f9598fea54
3
+ metadata.gz: aae56ee6e048b9a588f913223ea882f5e577cd02
4
+ data.tar.gz: c887b5cde11e4cde6ee833a2aa59ff41cdbdb7f0
5
5
  SHA512:
6
- metadata.gz: 02d74b7a88c34231e7503976af12ca9320c0476e0bb5f250455e5144092623157775a8972a5929ba76114f63745515050965c10cba7e3bb7f8a3a84781959ca4
7
- data.tar.gz: bf9e30967ddbf7d42085d30bcc5c039096b96739ae4c3df87910f264fdb32721873f6b29fbdd14aff3d9c01de786f73ba8567fd98f81942ef37df95455ebd903
6
+ metadata.gz: 94b36aa30506420c922153951efce3d49044aa140c0af6959bd3a4413aae69f04c6e2ee6d4049919a75384edd1c54bf5f78cd19d1353c2d5bee080508a201623
7
+ data.tar.gz: 7198c2c6d800a1914302cb07496459903da5720d7704e829c69d2370a7980bdfb6216a1d8ec5fa6ce2d5e63248f7f11f94e6478623d524549c2a67b94ac36687
data/README.md CHANGED
@@ -26,15 +26,26 @@ require 'pla'
26
26
  arrivals = PLA.arrivals
27
27
  departures = PLA.departures
28
28
 
29
+ # Note: all is an amalgam of arrivals and departures.
30
+ # the 'movements' on the PLA website is incomplete; it just
31
+ # shows movements within the port
32
+ all = PLA.all
33
+
29
34
  puts arrivals
30
35
  puts departures
36
+ puts all
31
37
 
32
38
  # Find next ten boats set to arrive
33
- puts PLA.arrivals.sort_by{|a| a[:timestamp]}[0..9]
39
+ puts PLA.arrivals_by_timestamp[0..9]
40
+
41
+ # List vessels alphabetically, as per PLA website
42
+ puts PLA.all_by_vessel_name
34
43
 
35
- # Find all boats from Panama
36
- puts PLA.arrivals.select{|b| b[:country] == 'Panama'}
44
+ # Find all movements made by Panamanian vessels
45
+ puts PLA.find_all_by_country 'Panama'
37
46
 
47
+ # Find all movements by a particular vessel
48
+ puts PLA.find_all_by_vessel_name 'feo swan'
38
49
  ```
39
50
 
40
51
  Licence
data/lib/pla.rb CHANGED
@@ -9,4 +9,64 @@ class PLA
9
9
  def self.departures
10
10
  PLA::Departures.new.records
11
11
  end
12
+
13
+ def self.all
14
+ [PLA::Arrivals.new.records,
15
+ PLA::Departures.new.records].flatten.uniq
16
+ end
17
+
18
+ def self.find movement_type, field, key
19
+ if self.methods.include? movement_type
20
+ movements = self.send(movement_type)
21
+ return self.munge_by_field movements, :select, field, key
22
+ end
23
+ []
24
+ end
25
+
26
+ def self.sort movement_type, field
27
+ if self.methods.include? movement_type
28
+ movements = self.send(movement_type)
29
+ return self.munge_by_field movements, :sort_by, field
30
+ end
31
+ []
32
+ end
33
+
34
+ def self.munge_by_field movements, method, field, search_value=nil
35
+ if field =~ /^(.*)_(.*)$/
36
+ field = $1
37
+ field_key = $2
38
+
39
+ search_value.nil? ?
40
+ movements.send(method){|m| m[field.to_sym][field_key.to_sym]} :
41
+ movements.send(method){|m| m[field.to_sym][field_key.to_sym] == search_value}
42
+
43
+ else
44
+ search_value.nil? ?
45
+ movements.send(method){|m| m[field.to_sym]} :
46
+ movements.send(method){|m| m[field.to_sym] == search_value}
47
+ end
48
+ end
49
+
50
+ def self.method_missing(m, *args, &block)
51
+ if m.to_s =~ /^(.*)_by_(.*)$/
52
+ movement_type = $1.to_sym
53
+ field = $2.to_sym
54
+
55
+ if movement_type.to_s =~ /^find_(.*)$/
56
+ movement_type = $1.to_sym
57
+ return self.find(movement_type, field, args.first)
58
+ else
59
+ return self.sort(movement_type, field)
60
+ end
61
+ end
62
+ super
63
+ end
64
+
65
+ def self.respond_to?(method_sym, include_private = false)
66
+ if method_sym.to_s =~ /^(.*)_by_(.*)$/
67
+ true
68
+ else
69
+ super
70
+ end
71
+ end
12
72
  end
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "pla"
7
- spec.version = '0.1.1'
7
+ spec.version = '0.2.0'
8
8
  spec.authors = ["jspc"]
9
9
  spec.email = ["james@zero-internet.org.uk"]
10
10
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pla
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - jspc
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-05-28 00:00:00.000000000 Z
11
+ date: 2016-05-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler