lib/swift/attribute.rb in swift-0.4.3 vs lib/swift/attribute.rb in swift-0.5.0
- old
+ new
@@ -10,15 +10,21 @@
@serial = options.fetch(:serial, false)
define_scheme_methods(scheme)
end
def default
- @default.respond_to?(:call) ? @default.call : (@default.nil? ? nil : @default.dup)
+ if @default.respond_to?(:call)
+ @default.call
+ elsif Swift.special_constant?(@default)
+ @default
+ else
+ @default.dup
+ end
end
def define_scheme_methods scheme
scheme.class_eval <<-RUBY, __FILE__, __LINE__ + 1
- def #{name}; tuple.fetch(:#{field}) end
+ def #{name}; tuple.fetch(:#{field}, nil) end
def #{name}= value; tuple.store(:#{field}, value) end
RUBY
end
end # Attribute
end # Swift