module CapicuaGen
Este mixin se presentar herramientas para trabajar con parametros
end¶ ↑
Agrega opciones de refleccion a las clases que lo implementan
Agrega opciones de refleccion a las clases que lo implementan
CapicuaGen
es un software que ayuda a la creación automática de sistemas empresariales a través de la definición y ensamblado de diversos generadores de características.
El proyecto fue iniciado por José Luis Bautista Martín, el 6 de enero de 2016.
Puede modificar y distribuir este software, según le plazca, y usarlo para cualquier fin ya sea comercial, personal, educativo, o de cualquier índole, siempre y cuando incluya este mensaje, y se permita acceso al código fuente.
Este software es código libre, y se licencia bajo LGPL.
Para más información consultar www.gnu.org/licenses/lgpl.html
end¶ ↑
CapicuaGen
es un software que ayuda a la creación automática de sistemas empresariales a través de la definición y ensamblado de diversos generadores de características.
El proyecto fue iniciado por José Luis Bautista Martín, el 6 de enero de 2016.
Puede modificar y distribuir este software, según le plazca, y usarlo para cualquier fin ya sea comercial, personal, educativo, o de cualquier índole, siempre y cuando incluya este mensaje, y se permita acceso al código fuente.
Este software es código libre, y se licencia bajo LGPL.
Para más información consultar www.gnu.org/licenses/lgpl.html
end¶ ↑
CapicuaGen
es un software que ayuda a la creación automática de sistemas empresariales a través de la definición y ensamblado de diversos generadores de características.
El proyecto fue iniciado por José Luis Bautista Martín, el 6 de enero de 2016.
Puede modificar y distribuir este software, según le plazca, y usarlo para cualquier fin ya sea comercial, personal, educativo, o de cualquier índole, siempre y cuando incluya este mensaje, y se permita acceso al código fuente.
Este software es código libre, y se licencia bajo LGPL.
Para más información consultar www.gnu.org/licenses/lgpl.html
end¶ ↑
Constants
- VERSION
Public Instance Methods
Devuelve una coleccion atributos de unos terminadas características de cierto tipo
# File lib/CapicuaGen/Mixins/attributes_mixin.rb, line 32 def get_attributes(values= {}) # Atributos a generar attributes = initialize_array_parameter(values[:attributes]) # Tipo de características a buscar target_types= initialize_array_parameter(values[:target_types]) # Agrego los atributes requeridos result = {} attributes.each do |a| result[a]= [] end # Busco las características que contiene entidades de SQL para una table generator.get_features_in_targets_by_type(target_types).each do |f| attributes.each do |a| result[a]<<f.generation_attributes[a] if f.generation_attributes[a] end result.each_pair do |k, v| yield k, v end end end
Inicializa un parametro que debe ser un array
# File lib/CapicuaGen/Mixins/parameter_mixin.rb, line 30 def initialize_array_parameter(value) # Configuro los parametros de tipo result= [] if value result= value if result and not result.instance_of?(Array) result= [result] end else result= [] end return result end
Inicializa las propiedades de un objeto, si no dichas propiedades las crea
# File lib/CapicuaGen/Mixins/reflection_mixin.rb, line 58 def initialize_properties(properties, create_new_properties= true) # Recorro las propiedades properties.each do |key, value| # convierto el simbolo en un string key_s= key.to_s # Compruebo si existe y si no lo creo if not self.respond_to?(key.to_s) if create_new_properties create_attr(key.to_s) else raise ("No se permite la propiedad '#{key}' para el tipo '#{self.class.name}'") end end # Establezco el valor set_property(key_s, value) end end
Private Instance Methods
Crea una propiedad
# File lib/CapicuaGen/Mixins/reflection_mixin.rb, line 42 def create_attr(name) create_method("#{name}=".to_sym) { |val| instance_variable_set("@" + name, val) } create_method(name.to_sym) { instance_variable_get("@" + name) } end
Crea un metodo
# File lib/CapicuaGen/Mixins/reflection_mixin.rb, line 37 def create_method(name, &block) self.singleton_class.send(:define_method, name, &block) end
Establece una propiedad
# File lib/CapicuaGen/Mixins/reflection_mixin.rb, line 48 def set_property(prop_name, prop_value) self.send("#{prop_name}=", prop_value) end