Sha256: 406346edaee8e7900969c10f58001d7c0e0f3dd4e3714345bc587a9d7f7b6f75
Contents?: true
Size: 1.34 KB
Versions: 1
Compression:
Stored size: 1.34 KB
Contents
# This class manages creation of aliases. module Alias class Manager def initialize #:nodoc: @alias_creators = {} @verbose = false @force = false end attr_accessor :alias_creators, :verbose, :force def alias_types; @alias_creators.keys; end def factory_create_aliases(alias_type, aliases_hash) creator_class_string = "Alias::#{alias_type.camelize}Creator" create_options = aliases_hash.slice_off!('auto_alias', 'verbose', 'force') create_options['verbose'] = @verbose unless create_options.has_key?('verbose') if creator_class = Object.any_const_get(creator_class_string) creator_class.create(aliases_hash, create_options) else puts "Creator class '#{creator_class_string}' not found." if @verbose nil end end def create_aliases(alias_type, aliases_hash) aliases_hash = aliases_hash.dup if obj = factory_create_aliases(alias_type.to_s, aliases_hash.dup) @alias_creators[alias_type.to_sym] ||= obj accessor_method = "#{alias_type}_aliases" if ! respond_to?(accessor_method) self.class.send :attr_accessor, accessor_method end self.send("#{accessor_method}=", {}) if self.send(accessor_method).nil? self.send(accessor_method).merge! obj.alias_map end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
cldwalker-alias-0.1.1 | lib/alias/manager.rb |