Sha256: a454c2116ee009fd4d9347a0a80f4f3525e0a7fb4830771831e3daae97099adf

Contents?: true

Size: 936 Bytes

Versions: 39

Compression:

Stored size: 936 Bytes

Contents

# frozen_string_literal: true

module Facter
  module Utils
    # Sort nested hash.
    def self.sort_hash_by_key(hash, recursive = true, &block)
      hash.keys.sort(&block).each_with_object({}) do |key, seed|
        seed[key] = hash[key]
        seed[key] = sort_hash_by_key(seed[key], true, &block) if recursive && seed[key].is_a?(Hash)

        seed
      end
    end

    def self.deep_copy(obj)
      Marshal.load(Marshal.dump(obj))
    end

    def self.split_user_query(user_query)
      queries = user_query.split('.')
      queries.map! { |query| query =~ /^[0-9]+$/ ? query.to_i : query }
    end

    def self.deep_stringify_keys(object)
      case object
      when Hash
        object.each_with_object({}) do |(key, value), result|
          result[key.to_s] = deep_stringify_keys(value)
        end
      when Array
        object.map { |e| deep_stringify_keys(e) }
      else
        object
      end
    end
  end
end

Version data entries

39 entries across 39 versions & 1 rubygems

Version Path
facter-4.0.49 lib/facter/util/utils.rb
facter-4.0.48 lib/facter/util/utils.rb
facter-4.0.47 lib/facter/util/utils.rb
facter-4.0.46 lib/facter/framework/utils/utils.rb
facter-4.0.44 lib/facter/framework/utils/utils.rb
facter-4.0.43 lib/facter/framework/utils/utils.rb
facter-4.0.42 lib/facter/framework/utils/utils.rb
facter-4.0.41 lib/facter/framework/utils/utils.rb
facter-4.0.40 lib/facter/framework/utils/utils.rb
facter-4.0.39 lib/facter/framework/utils/utils.rb
facter-4.0.38 lib/facter/framework/utils/utils.rb
facter-4.0.37 lib/facter/framework/utils/utils.rb
facter-4.0.36 lib/facter/framework/utils/utils.rb
facter-4.0.35 lib/facter/framework/utils/utils.rb
facter-4.0.34 lib/facter/framework/utils/utils.rb
facter-4.0.33 lib/facter/framework/utils/utils.rb
facter-4.0.32 lib/facter/framework/utils/utils.rb
facter-4.0.31 lib/facter/framework/utils/utils.rb
facter-4.0.30 lib/facter/framework/utils/utils.rb
facter-4.0.29 lib/framework/utils/utils.rb