Project

General

Profile

« Previous | Next » 

Revision bbe89518

Added by Marc Dequènes over 14 years ago

  • ID bbe8951879f7c0b7b74df85f94c7de5b712cf78c

[cleanup] internal rework #1

View differences:

lib/ldap_shadows/shadow.rb
@aspects = {}
end
def set_shadow_config(shadow_def_raw)
def set_config(shadow_def_raw)
@shadow_config = @config.parse_and_validate(@name, 'shadow', shadow_def_raw)
end
def get_shadow_config
# TODO: remove this workaround
@shadow_config[:presentation]
def get_config
@shadow_config
end
def add_aspect(aspect_name, aspect_def_raw)
e_type = 'aspect'
klass = add_container_element(e_type, aspect_name)
aspect_def = @config.parse_and_validate(aspect_name, e_type, aspect_def_raw)
klass = add_container_element(e_type, aspect_name, aspect_def_raw)
# TODO: remove this crap
aspect_def = @config.parse_and_validate(aspect_name, e_type, aspect_def_raw)
@aspects[aspect_name.to_sym] = aspect_def
end
......
def add_object(object_name, object_def_raw)
e_type = 'object'
klass = add_container_element(e_type, object_name)
object_def = @config.parse_and_validate(object_name, 'object', object_def_raw)
klass.presentation = object_def[:presentation]
klass.ldap_mapping object_def[:mapping]
klass = add_container_element(e_type, object_name, object_def_raw)
# TODO: remove this crap
object_def = @config.parse_and_validate(object_name, e_type, object_def_raw)
klass.presentation = object_def[:presentation]
klass.ldap_mapping object_def[:mapping]
@object_definitions[object_name.to_sym] = object_def
end
......
protected
def add_container_element(e_type, e_name)
def add_container_element(e_type, e_name, e_def_raw)
superklass_location = LdapShadows::Elements
superklass_name = 'Ldap' + e_type.classify
unless superklass_location.const_defined?(superklass_name)
......
raise PreProcessingError, _("Element '%s' for model '%s' as already been defined") % [e_name, e_type]
end
begin
klass = @container.module_eval(<<-EOS)
class #{klass_name} < #{superklass_location}::#{superklass_name}; self; end
EOS
klass.instance_variable_set(:@handle, e_name)
klass.instance_variable_set(:@shadow, self)
klass.meta_eval do
attr_reader :handle, :shadow
end
klass = @container.module_eval(<<-EOS)
class #{klass_name} < #{superklass_location}::#{superklass_name}; self; end
EOS
klass.instance_variable_set(:@handle, e_name)
klass.instance_variable_set(:@shadow, self)
klass.meta_eval do
attr_reader :handle, :shadow
end
e_def = @config.parse_and_validate(e_name, e_type, e_def_raw)
klass.instance_variable_set(:@parameters, e_def)
begin
klass_content = @config.load_hook_content(@name, e_type, e_name)
klass.class_eval(klass_content) unless klass_content.nil?
rescue
......
@container_elements[e_type][e_name] = klass
klass
rescue
raise PreProcessingError, _("Could not create element '%s' for model '%s': %s") % [e_type, e_name, $!]
end
end
end

Also available in: Unified diff