lib/swift/attribute.rb in swift-0.7.1 vs lib/swift/attribute.rb in swift-0.7.2
- old
+ new
@@ -1,19 +1,36 @@
module Swift
+
+ # An attribute (column) definition.
#--
# NOTE: Default method is defined in the extension.
class Attribute
attr_reader :name, :field, :key, :serial
+ # @example
+ # user = Class.new(Swift::Scheme)
+ # Swift::Attribute.new(user, :name, Swift::Type::String)
+ #
+ # @param [Swift::Scheme] scheme
+ # @param [Symbol] name
+ # @param [Hash] options
+ # @option options [Object, Proc] :default
+ # @option options [Symbol] :field
+ # @option options [TrueClass, FalseClass] :key
+ # @option options [TrueClass, FalseClass] :serial
+ #
+ # @see Swift::Scheme
+ # @see Swift::Type
def initialize scheme, name, options = {}
@name = name
@default = options.fetch(:default, nil)
@field = options.fetch(:field, name)
@key = options.fetch(:key, false)
@serial = options.fetch(:serial, false)
define_scheme_methods(scheme)
end
+ # Evals attribute accessors for this attribute into the scheme.
def define_scheme_methods scheme
scheme.class_eval <<-RUBY, __FILE__, __LINE__ + 1
def #{name}; tuple.fetch(:#{field}, nil) end
def #{name}= value; tuple.store(:#{field}, value) end
RUBY