Sha256: f5ce50be7e83bd59a946ef07e67de129b68165b30afcf9a7910681eb52d9ce28

Contents?: true

Size: 860 Bytes

Versions: 3

Compression:

Stored size: 860 Bytes

Contents

# frozen_string_literal: true

# Add #deep_freeze to hashes and arrays
module Runger::Ext::DeepFreeze
  refine ::Hash do
    def deep_freeze
      freeze
      each_value do |value|
        value.deep_freeze if value.is_a?(::Hash) || value.is_a?(::Array)
      end
    end
  end

  refine ::Array do
    def deep_freeze
      freeze
      each do |value|
        value.deep_freeze if value.is_a?(::Hash) || value.is_a?(::Array)
      end
    end
  end

  begin
    require 'active_support/core_ext/hash/indifferent_access'
  rescue LoadError
  end

  if defined?(::ActiveSupport::HashWithIndifferentAccess)
    refine ::ActiveSupport::HashWithIndifferentAccess do
      def deep_freeze
        freeze
        each_value do |value|
          value.deep_freeze if value.is_a?(::Hash) || value.is_a?(::Array)
        end
      end
    end
  end

  using self
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
runger_config-5.2.0 lib/runger/ext/deep_freeze.rb
runger_config-5.1.0 lib/runger/ext/deep_freeze.rb
runger_config-5.0.0 lib/runger/ext/deep_freeze.rb