module Tengine::Support::Config::Definition::ClassMethods
Public Instance Methods
depends(*definition_reference_names)
click to toggle source
# File lib/tengine/support/config/definition.rb, line 81 def depends(*definition_reference_names) if superclass.is_a?(Tengine::Support::Config::Definition) && (self.definition_reference_names == self.superclass.definition_reference_names) self.definition_reference_names = self.superclass.definition_reference_names.dup end self.class_eval do definition_reference_names.each do |ref_name| attr_accessor ref_name end end self.definition_reference_names += definition_reference_names end
field(__name__, *args, &block)
click to toggle source
# File lib/tengine/support/config/definition.rb, line 25 def field(__name__, *args, &block) attrs = args.last.is_a?(Hash) ? args.pop : {} attrs[:description] = args.first unless args.empty? attrs[:__name__] = __name__ attrs[:__parent__] = self attrs[:convertor] = block if (superclass < Tengine::Support::Config::Definition) && (self.children == self.superclass.children) self.children = self.superclass.children.dup end if field = children.detect{|child| child.__name__ == __name__} new_field = field.dup new_field.update(attrs) idx = self.children.index(field) self.children[idx] = new_field field = new_field else field = Field.new(attrs) self.children << field end (class << self; self; end).module_eval do define_method(field.__name__){ field } end self.class_eval do field_name = field.__name__ ivar_name = :"@#{field_name}" define_method(field_name) do if result = instance_variable_get(ivar_name) result else field = child_by_name(field_name) result = field ? field.default_value : nil instance_variable_set(ivar_name, result) result end end define_method("#{field.__name__}=") do |value| instance_variable_set("@#{field.__name__}", field.convert(value, self)) end end end
parameter(parameter_name)
click to toggle source
# File lib/tengine/support/config/definition.rb, line 74 def parameter(parameter_name) parameters << parameter_name self.class_eval do attr_accessor parameter_name end end
parameters()
click to toggle source
# File lib/tengine/support/config/definition.rb, line 70 def parameters @parameters ||= [] end