class WrapperBased::Casting
Public Class Methods
new()
click to toggle source
# File lib/wrapper_based/casting.rb, line 5 def initialize include WrapperBased end
Public Instance Methods
casts(role) { |value| ... }
click to toggle source
# File lib/wrapper_based/casting.rb, line 9 def casts(role) role_writer = :"#{role}=" define_method(:"with_#{role}!") do |value| send role_writer, yield(value) self end private_reader role private_writer role end
casts_as(role, &recast)
click to toggle source
# File lib/wrapper_based/casting.rb, line 21 def casts_as(role, &recast) role_player = :"@#{role}" define_method(:"with_#{role}!") do |actor| _components[role] = cast_as(role, actor, &recast) instance_variable_set(role_player, actor) self end private_reader role private_writer role end
Private Instance Methods
private_reader(role)
click to toggle source
# File lib/wrapper_based/casting.rb, line 36 def private_reader(role) define_method(role) do _components.fetch(role) { raise RoleValueMissing, "Role `#{role}' is missing.", caller } end private role end
private_writer(role)
click to toggle source
# File lib/wrapper_based/casting.rb, line 44 def private_writer(role) writer = :"#{role}=" role_player = :"@#{role}" define_method(writer) do |value| _components[role] = value instance_variable_set(role_player, value) end private writer end