Sha256: b4a06a9bceac744399461392cae418c9c1542c009252bbc01c2902eb85fc3e83

Contents?: true

Size: 817 Bytes

Versions: 1

Compression:

Stored size: 817 Bytes

Contents

module Music
module Arrangement

class ClassSpecifier
  include Hashmake::HashMakeable

  # hashed-arg specs (for hash-makeable idiom)
  ARG_SPECS = {
    :requirements => arg_spec_array(:reqd => false, :type => [GemRequirement, FileRequirement]),
    :qualified_name => arg_spec(:reqd => true, :type => String),
  }

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

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

  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
end

end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
music-arrangement-0.3.0 lib/music-arrangement/class_specifier.rb