class Audrey::Object::Custom::Field

Audrey::Object::Custom::Field

Attributes

auto[RW]
clss[RW]
graph[RW]
name[RW]
publish[RW]
read[RW]
required[RW]
write[RW]

Public Class Methods

new(p_name) click to toggle source
# File lib/audrey.rb, line 2057
def initialize(p_name)
        @name = p_name
        @read = true
        @write = true
        @clss = nil
        @auto = false
        @publish = false
        @graph = false
        
        # normalize name
        @name = @name.strip
        @name = @name.gsub(/\s+/mu, ' ')
end

Public Instance Methods

add_to_class(tgt) click to toggle source
# File lib/audrey.rb, line 2078
def add_to_class(tgt)
        # $tm.hrm
        
        # Ruby doesn't like it if we use an @ variable in the method definition
        # of another class.
        nme = @name.dup
        
        # read
        if @read
                tgt.define_method(nme) do
                        return @node[nme]
                end
        end
        
        # write
        if @write
                # reference self inside the method for assigning the instance
                # variable
                me = self
                
                # definew method
                tgt.define_method("#{nme}=") do |val|
                        val = me.normalize(val)
                        return @node[nme] = val
                end
        end
end
auto_add(object) click to toggle source
# File lib/audrey.rb, line 2113
def auto_add(object)
        # early exit
        @auto or return
        
        # get audrey node
        node = object.audrey
        
        # init
        new_val = nil
        
        # add to node
        if Audrey::Object::Custom.descendant?(@auto)
                new_val = @auto.new('accessor'=>node.db)
        elsif @auto.is_a?(Proc)
                new_val = @auto.call(object)
        end
        
        # set new value
        node[@name] = new_val
end
base_checks(*opts) click to toggle source
# File lib/audrey.rb, line 2163
def base_checks(*opts)
end
has_checks?() click to toggle source
# File lib/audrey.rb, line 2152
def has_checks?
        return false
end
normalize(val) click to toggle source
# File lib/audrey.rb, line 2141
def normalize(val)
        return val
end