Sha256: dce0d895fe59bf41db3d304b0cce108314c6b89bfd97a0b89a22262015d5b322

Contents?: true

Size: 1.58 KB

Versions: 7

Compression:

Stored size: 1.58 KB

Contents

# frozen_string_literal: true
#
# Copyright (c) 2006-2023 Hal Brodigan (postmodern.mod3 at gmail.com)
#
# ronin-support is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# ronin-support is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with ronin-support.  If not, see <https://www.gnu.org/licenses/>.
#

module Enumerable
  #
  # Maps the elements to a Hash.
  #
  # @yield [element]
  #   The given block will be passed each element.
  #   The return value from the block will be stored in the hash.
  #
  # @yieldparam [Object] element
  #   An element.
  #
  # @return [Hash{Object => Object}]
  #   The hash of elements and their mappings.
  #
  # @example
  #   host_names = %w[www.wired.com www.google.com]
  #   host_names.map_hash { |name| Resolv.getaddresses(name) }
  #   # {"www.wired.com"=>["184.84.183.17", "184.84.183.91"],
  #   #  "www.google.com"=>["173.194.33.18", "173.194.33.17", "173.194.33.19", "173.194.33.20", "173.194.33.16"]}
  #
  # @since 0.3.0
  #
  # @api public
  #
  def map_hash
    new_hash = Hash.new do |hash,key|
      hash[key] = yield(key)
    end

    each { |element| new_hash[element] }
    return new_hash
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
ronin-support-1.0.7 lib/ronin/support/core_ext/enumerable.rb
ronin-support-1.0.6 lib/ronin/support/core_ext/enumerable.rb
ronin-support-1.0.5 lib/ronin/support/core_ext/enumerable.rb
ronin-support-1.0.4 lib/ronin/support/core_ext/enumerable.rb
ronin-support-1.0.3 lib/ronin/support/core_ext/enumerable.rb
ronin-support-1.0.2 lib/ronin/support/core_ext/enumerable.rb
ronin-support-1.0.1 lib/ronin/support/core_ext/enumerable.rb