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
|
# File 'lib/pla.rb', line 26
def self.find movement_type, field, key
if self.methods.include? movement_type
movements = self.send(movement_type)
return self.munge_by_field movements, :select, field, key
end
[]
end
|
.method_missing(m, *args, &block) ⇒ Object
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
# File 'lib/pla.rb', line 58
def self.method_missing(m, *args, &block)
if m.to_s =~ /^(.*)_by_(.*)$/
movement_type = $1.to_sym
field = $2.to_sym
if movement_type.to_s =~ /^find_(.*)$/
movement_type = $1.to_sym
return self.find(movement_type, field, args.first)
else
return self.sort(movement_type, field)
end
end
super
end
|
.munge_by_field(movements, method, field, search_value = nil) ⇒ Object
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
# File 'lib/pla.rb', line 42
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
73
74
75
76
77
78
79
|
# File 'lib/pla.rb', line 73
def self.respond_to?(method_sym, include_private = false)
if method_sym.to_s =~ /^(.*)_by_(.*)$/
true
else
super
end
end
|
.sort(movement_type, field) ⇒ Object
34
35
36
37
38
39
40
|
# File 'lib/pla.rb', line 34
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
|