GNUmakefile: no news yet...
[metropolis.git] / lib / metropolis / multi_hash.rb
blob7054883da0b1b98d98625749c5da2dd9b2a7cf8a
1 # -*- encoding: binary -*-
2 # :enddoc:
3 module Metropolis::MultiHash
4   autoload :Digest, 'metropolis/multi_hash/digest'
5   autoload :ToI, 'metropolis/multi_hash/to_i'
7   def self.extended(obj)
8     sym = obj.instance_eval {
9       case @multi_hash.to_s
10       when /\Ato_i/
11         extend Metropolis::MultiHash::ToI
12       when /\Adigest_/
13         extend Metropolis::MultiHash::Digest
14       when /\Atdb_hash_/
15         extend TDB::HashFunctions
16       end
17       @multi_hash
18     }
19     obj.respond_to?(sym) or
20       raise ArgumentError, "multi_hash=#{sym} not supported"
21     (class << obj; self; end).instance_eval do
22       alias_method :multi_hash, sym
23     end
24   end
25 end