Class: PLA

Inherits:
Object
  • 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

.allObject


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

.arrivalsObject


6
7
8
# File 'lib/pla.rb', line 6

def self.arrivals
  PLA::Arrivals.new.records
end

.departuresObject


10
11
12
# File 'lib/pla.rb', line 10

def self.departures
  PLA::Departures.new.records
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

.in_portObject


14
15
16
# File 'lib/pla.rb', line 14

def self.in_port
  PLA::InPort.new.records
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

Returns:

  • (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