lib/swift/attribute.rb in swift-0.14.0 vs lib/swift/attribute.rb in swift-1.0.0
- old
+ new
@@ -5,41 +5,52 @@
# NOTE: Default method is defined in the extension.
class Attribute
attr_reader :name, :field, :key, :serial
# @example
- # user = Class.new(Swift::Scheme)
+ # user = Class.new(Swift::Record)
# Swift::Attribute.new(user, :name, Swift::Type::String)
#
- # @param [Swift::Scheme] scheme
+ # @param [Swift::Record] record
# @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::Record
# @see Swift::Type
- def initialize scheme, name, options = {}
+ def initialize record, 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)
+ define_record_methods(record)
end
+ def default
+ case @default
+ when Numeric, Symbol, true, false, nil
+ @default
+ when Proc
+ @default.call
+ else
+ @default.dup
+ end
+ end
+
# The attributes field.
#
# @return [String]
def to_s
field.to_s
end
- # Evals attribute accessors for this attribute into the scheme.
- def define_scheme_methods scheme
- scheme.class_eval <<-RUBY, __FILE__, __LINE__ + 1
+ # Evals attribute accessors for this attribute into the record.
+ def define_record_methods record
+ record.class_eval <<-RUBY, __FILE__, __LINE__ + 1
def #{name}; tuple.fetch(:#{field}, nil) end
def #{name}= value; tuple.store(:#{field}, value) end
RUBY
end
end # Attribute