Class: PLA
- Inherits:
-
Object
show all
- Defined in:
- lib/pla.rb,
lib/pla/vessel.rb,
lib/pla/in_port.rb,
lib/pla/arrivals.rb,
lib/pla/movement.rb,
lib/pla/movements.rb,
lib/pla/departures.rb
Defined Under Namespace
Classes: Arrivals, Departures, InPort, Movement, Movements, Vessel
Class Method Summary
collapse
Class Method Details
.all ⇒ Object
18
19
20
21
22
23
24
|
# File 'lib/pla.rb', line 18
def self.all
[
self.arrivals,
self.departures,
self.in_port
].flatten.uniq
end
|
.find(movement_type, field, key) ⇒ Object
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
# File 'lib/pla.rb', line 26
def self.find movement_type, field, key
if self.methods.include? movement_type
movements = self.send(movement_type)
if field == :location
return [
self.munge_by_field(movements, :select, :to, key),
self.munge_by_field(movements, :select, :from, key)
].flatten.uniq
else
return self.munge_by_field movements, :select, field, key
end
end
[]
end
|
.method_missing(m, *args, &block) ⇒ Object
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
# File 'lib/pla.rb', line 66
def self.method_missing(m, *args, &block)
if m.to_s =~ /^(find|sort)_(.*)_by_(.*)$/
querier = $1
type = $2.to_sym
field = $3.to_sym
if querier == 'find'
return self.find(type, field, args.first)
elsif querier == 'sort'
return self.sort(type, field)
end
end
super
end
|
.munge_by_field(movements, method, field, search_value = nil) ⇒ Object
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
# File 'lib/pla.rb', line 50
def self.munge_by_field movements, method, field, search_value=nil
if field =~ /^(.*)_(.*)$/
field = $1
field_key = $2
search_value.nil? ?
movements.send(method){|m| m[field.to_sym][field_key.to_sym]} :
movements.send(method){|m| m[field.to_sym][field_key.to_sym] == search_value}
else
search_value.nil? ?
movements.send(method){|m| m[field.to_sym]} :
movements.send(method){|m| m[field.to_sym] == search_value}
end
end
|
.respond_to?(method_sym, include_private = false) ⇒ Boolean
81
82
83
84
85
86
87
88
|
# File 'lib/pla.rb', line 81
def self.respond_to?(method_sym, include_private = false)
if method_sym.to_s =~ /^(find|sort)_(.*)_by_(.*)$/ and
self.methods.include? $2.to_sym
true
else
super
end
end
|
.sort(movement_type, field) ⇒ Object
42
43
44
45
46
47
48
|
# File 'lib/pla.rb', line 42
def self.sort movement_type, field
if self.methods.include? movement_type
movements = self.send(movement_type)
return self.munge_by_field movements, :sort_by, field
end
[]
end
|