Sha256: 45bc4393d8e7709dd68e965cc1a3d72123b83d5b917a3bc607328981ea01d18d

Contents?: true

Size: 610 Bytes

Versions: 325

Compression:

Stored size: 610 Bytes

Contents

# frozen_string_literal: true

module EacRubyUtils
  module Immutable
    class BaseAccessor
      common_constructor :name do
        self.name = name.to_sym
      end

      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)
        object.send(:immutable_values_get)[name]
      end
    end
  end
end

Version data entries

325 entries across 325 versions & 4 rubygems

Version Path
eac_tools-0.66.0 sub/eac_ruby_utils/lib/eac_ruby_utils/immutable/base_accessor.rb
eac_tools-0.65.1 sub/eac_ruby_utils/lib/eac_ruby_utils/immutable/base_accessor.rb
eac_ruby_utils-0.116.0 lib/eac_ruby_utils/immutable/base_accessor.rb
eac_ruby_utils-0.115.0 lib/eac_ruby_utils/immutable/base_accessor.rb
eac_tools-0.65.0 sub/eac_ruby_utils/lib/eac_ruby_utils/immutable/base_accessor.rb
eac_ruby_utils-0.114.0 lib/eac_ruby_utils/immutable/base_accessor.rb
eac_tools-0.64.0 sub/eac_ruby_utils/lib/eac_ruby_utils/immutable/base_accessor.rb
eac_ruby_utils-0.113.0 lib/eac_ruby_utils/immutable/base_accessor.rb
eac_tools-0.63.0 sub/eac_ruby_utils/lib/eac_ruby_utils/immutable/base_accessor.rb
eac_tools-0.62.1 sub/eac_ruby_utils/lib/eac_ruby_utils/immutable/base_accessor.rb
eac_tools-0.62.0 sub/eac_ruby_utils/lib/eac_ruby_utils/immutable/base_accessor.rb
eac_tools-0.61.1 sub/eac_ruby_utils/lib/eac_ruby_utils/immutable/base_accessor.rb
eac_tools-0.61.0 sub/eac_ruby_utils/lib/eac_ruby_utils/immutable/base_accessor.rb
eac_tools-0.60.3 sub/eac_ruby_utils/lib/eac_ruby_utils/immutable/base_accessor.rb
eac_tools-0.60.2 sub/eac_ruby_utils/lib/eac_ruby_utils/immutable/base_accessor.rb
eac_tools-0.60.1 sub/eac_ruby_utils/lib/eac_ruby_utils/immutable/base_accessor.rb
eac_tools-0.60.0 sub/eac_ruby_utils/lib/eac_ruby_utils/immutable/base_accessor.rb
eac_tools-0.59.0 sub/eac_ruby_utils/lib/eac_ruby_utils/immutable/base_accessor.rb
eac_tools-0.58.0 sub/eac_ruby_utils/lib/eac_ruby_utils/immutable/base_accessor.rb
eac_tools-0.57.0 sub/eac_ruby_utils/lib/eac_ruby_utils/immutable/base_accessor.rb