Module: Sncf::Models

Defined in:
lib/sncf/models/generator.rb

Constant Summary collapse

MODEL_NAMES =
%w[Station AdministrativeRegion]
MODEL_ATTRIBUTES =
{
  'Station' => [:id, :coord, :quality, :name, :label, :timezone, :administrative_regions],
  'AdministrativeRegion' => [:insee, :level, :coord, :name, :label, :id, :zip_code]
}

Class Method Summary collapse

Class Method Details

.generate_class(klass_vars) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/sncf/models/generator.rb', line 18

def self.generate_class(klass_vars)
  Class.new do
    klass_vars.each do |field|
      define_method field.intern do
        instance_variable_get("@#{field}")
      end
      define_method "#{field}=".intern do |arg|
        instance_variable_set("@#{field}", arg)
      end
    end
    define_method :initialize do |args|
      klass_vars.each do |field|
        instance_variable_set("@#{field}", args[field])
      end
    end
  end
end

.generate_modelsObject



9
10
11
12
13
14
15
16
# File 'lib/sncf/models/generator.rb', line 9

def self.generate_models
  Sncf::Models::MODEL_NAMES.each do |klass_name|
    klass_vars  = Sncf::Models::MODEL_ATTRIBUTES[klass_name.to_s]
    klass       = generate_class klass_vars

    const_set klass_name, klass
  end
end