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

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

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

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

get_attributes(values= {}) { |k, v| ... } click to toggle source

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
initialize_array_parameter(value) click to toggle source

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
initialize_properties(properties, create_new_properties= true) click to toggle source

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

create_attr(name) click to toggle source

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
create_method(name, &block) click to toggle source

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
set_property(prop_name, prop_value) click to toggle source

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