aboutsummaryrefslogtreecommitdiffstats
path: root/lib/model_attribute.rb
blob: 84706ba4d1d9c9813e6f36a1fcdc88ee4a6bc895 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
class ModelAttribute
  attr_reader :klass, :name, :data_type

  def self.all
    @__all__ ||= []
  end

  def self.define(klass, name, data_type)
    all << new(klass, name, data_type)
  end

  def self.methods_by_class(klass)
    all.select do |model_attr|
      model_attr.klass == klass
    end
  end

  def initialize(klass, name, data_type)
    @klass = klass
    @name = name
    @data_type = data_type
  end

  # Chouette::Route
  define :route, :name, :string
  define :route, :published_name, :string
  define :route, :comment, :string
  define :route, :number, :string
  define :route, :direction, :string
  define :route, :wayback, :string

  # Chouette::JourneyPattern
  define :journey_pattern, :name, :string
  define :journey_pattern, :published_name, :string
  define :journey_pattern, :comment, :string
  define :journey_pattern, :registration_number, :string
  define :journey_pattern, :section_status, :integer

  # Chouette::VehicleJourney
  define :vehicle_journey, :comment, :string
  define :vehicle_journey, :status_value, :string
  define :vehicle_journey, :transport_mode, :string
  define :vehicle_journey, :facility, :string
  define :vehicle_journey, :published_journey_name, :string
  define :vehicle_journey, :published_journey_identifier, :string
  define :vehicle_journey, :vehicle_type_identifier, :string
  define :vehicle_journey, :number, :integer
  define :vehicle_journey, :mobility_restricted_suitability, :boolean
  define :vehicle_journey, :flexible_service, :boolean

  # Chouette::Footnote
  define :footnote, :code, :string
  define :footnote, :label, :string

  # Chouette::TimeTable
  define :time_table, :version, :string
  define :time_table, :comment, :string
  define :time_table, :start_date, :date
  define :time_table, :end_date, :date
  define :time_table, :color, :string

  # Chouette::RoutingConstraintZone
  define :routing_constraint_zone, :name, :string

  def code
    "#{@klass}##{@name}"
  end

  def ==(other)
    klass == other.klass &&
      name == other.name &&
      data_type == other.data_type
  end
end