class EacRubyUtils::ActsAsImmutable::BaseAccessor
def duplicate_object(object)
def duplicate_object(object) accessor_new_value = yield(immutable_value_get(object)) new_values = object.send(:immutable_values_get).merge(name => accessor_new_value) r = object.class.new(*object.immutable_constructor_args) r.send(:immutable_values_set, new_values) r end
def immutable_value_get(object)
def immutable_value_get(object) object.send(:immutable_values_get)[name] end
def immutable_value_get_filtered(object)
-
(Object)-
Parameters:
-
object(Object) --
def immutable_value_get_filtered(object) r = immutable_value_get(object) if object.respond_to?(immutable_value_get_filtered_method_name, true) r = object.send(immutable_value_get_filtered_method_name, r) end r end
def immutable_value_get_filtered_method_name
-
(Symbol)-
def immutable_value_get_filtered_method_name format(FILTER_GET_METHOD_NAME_FORMAT, name) end
def immutable_value_set_filtered(object, value)
-
(Object)-
Parameters:
-
object(Object) --
def immutable_value_set_filtered(object, value) if object.respond_to?(immutable_value_set_filtered_method_name, true) value = object.send(immutable_value_set_filtered_method_name, value) end immutable_value_set(object, value) end
def immutable_value_set_filtered_method_name
-
(Symbol)-
def immutable_value_set_filtered_method_name format(FILTER_SET_METHOD_NAME_FORMAT, name) end