pla 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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