def self::install_language_proxy( klass, languages=DefaultLanguages )
languages.replace( DefaultLanguages ) if languages.empty?
languages.each do |lang|
mod = load_language( lang.to_s.downcase )
ifaceMeth = mod.name.downcase.sub( /.*:/, '' )
languageProxyClass = make_language_proxy( mod )
if !klass.class_variables.include?( "@@__languageProxy_class" )
klass.module_eval %{
@@__languageProxy_class = {}
def self::__languageProxy_class; @@__languageProxy_class; end
}, __FILE__, __LINE__
end
klass.__languageProxy_class.merge!( ifaceMeth => languageProxyClass )
unless klass.instance_methods(true).include?( ifaceMeth )
klass.module_eval %{
def #{ifaceMeth}
@__#{ifaceMeth}_languageProxy ||=
self.class.__languageProxy_class["#{ifaceMeth}"].
new( self )
end
}, __FILE__, __LINE__
end
end
end