Class: Music::Arrangement::ClassSpecifier

Inherits:
Object
  • Object
show all
Includes:
Hashmake::HashMakeable
Defined in:
lib/music-arrangement/class_specifier.rb

Constant Summary collapse

ARG_SPECS =

hashed-arg specs (for hash-makeable idiom)

{
  :requirements => arg_spec_array(:reqd => false, :type => [GemRequirement, FileRequirement]),
  :qualified_name => arg_spec(:reqd => true, :type => String),
}

Instance Method Summary collapse

Constructor Details

#initialize(args = {}) ⇒ ClassSpecifier

Returns a new instance of ClassSpecifier.



13
14
15
# File 'lib/music-arrangement/class_specifier.rb', line 13

def initialize args={}
  hash_make args, ClassSpecifier::ARG_SPECS
end

Instance Method Details

#load_requirementsObject



17
18
19
20
21
# File 'lib/music-arrangement/class_specifier.rb', line 17

def load_requirements
  @requirements.each do |req|
    req.load
  end
end

#to_classObject



23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/music-arrangement/class_specifier.rb', line 23

def to_class
  load_requirements
  tokens = @qualified_name.split(/::/)
  
  module_names = tokens[0...-1]
  class_name = tokens.last

  cur_module = Kernel
  module_names.each do |module_name|
    cur_module = cur_module.const_get(module_name)
  end

  return cur_module.const_get(class_name)
end