class Fried::Schema::Attribute::DefineWriter
Define writer based on attribute {Definition} with type-checking
Attributes
is[RW]
Public Class Methods
build()
click to toggle source
# File lib/fried/schema/attribute/define_writer.rb, line 13 def self.build new end
call(attribute_definition, klass)
click to toggle source
# File lib/fried/schema/attribute/define_writer.rb, line 17 def self.call(attribute_definition, klass) instance = build instance.(attribute_definition, klass) end
new()
click to toggle source
# File lib/fried/schema/attribute/define_writer.rb, line 9 def initialize self.is = ::Fried::Typings::Is end
Public Instance Methods
call(definition, klass)
click to toggle source
Creates write method with type-checking @param definition [Definition] @param klass [Class, Module] @return [Definition]
# File lib/fried/schema/attribute/define_writer.rb, line 26 def call(definition, klass) is_a = is[definition.type] define_writer(definition, is_a, klass) end
Private Instance Methods
define_writer(definition, is_a, klass)
click to toggle source
# File lib/fried/schema/attribute/define_writer.rb, line 33 def define_writer(definition, is_a, klass) klass.instance_eval do define_method(definition.writer) do |value| value = is_a.(value) instance_variable_set(definition.instance_variable, value) end end end