Sha256: db74a8fa66b42b8308a10facf2aada3f6616efbe46e0fc5292dc7c4005e9cca4

Contents?: true

Size: 1.25 KB

Versions: 1

Compression:

Stored size: 1.25 KB

Contents

module Alias
  class ConstantCreator < Creator
    
    def delete_invalid_aliases(aliases_hash)
      delete_invalid_class_keys(aliases_hash)
    end
    
    def delete_existing_aliases(aliases_hash)
      aliases_hash.each do |k, v| 
        if (klass = Object.any_const_get(v)) && ! alias_map.values.include?(v)
          aliases_hash.delete(k)
          puts "Alias '#{v}' deleted since the constant already exists" if self.verbose
        end
      end
    end
    
    def create_aliases(aliases_hash)
      eval_string = ''
      aliases_hash.each {|k,v|
        eval_string += "#{v} = #{k}\n"
      }
      Object.class_eval eval_string
    end
    
    def generate_aliases(array_to_alias)
      make_shortest_aliases(array_to_alias)
    end
    
    def to_searchable_array
      @alias_map.map {|k,v| {:name=>k, :alias=>v}}
    end
    
    def make_shortest_aliases(unaliased_strings)
      shortest_aliases = {}
      possible_alias = ''
      unaliased_strings.each {|s|
        possible_alias = ''
        s.split('').each { |e|
          possible_alias += e  
          if ! shortest_aliases.values.include?(possible_alias)
            shortest_aliases[s] = possible_alias
            break
          end
        }
      }

      shortest_aliases
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
cldwalker-alias-0.1.2 lib/alias/constant_creator.rb