Sha256: 451884e3ded4e7660e1d57b1d2858fa1232a471a126dc3654f40b187842637b6

Contents?: true

Size: 1.11 KB

Versions: 7

Compression:

Stored size: 1.11 KB

Contents

require 'socket'

module Skein::Support
  # == Module Methods =======================================================

  def self.hostname
    Socket.gethostname
  end

  def self.process_name
    $0.split(/\s/).first.split('/').last.sub(/\.rb\z/, '')
  end

  def self.process_id
    Process.pid
  end

  def self.arrayify(value)
    case (value)
    when nil
      nil
    when Array
      value
    else
      [ value ]
    end
  end

  def self.hash_format(hash, width: nil)
    hash = hash.to_h

    width ||= hash.keys.map(&:length).sort[-1].to_i + 1

    template = "%%-%ds %%s" % [ width ]

    hash.map do |pair|
      template % pair
    end
  end

  def self.symbolize_keys(hash)
    case (hash)
    when Hash
      Hash[
        hash.map do |k,v|
          [
            k.to_s.to_sym,
            case (v)
            when Hash
              symbolize_keys(v)
            when Array
              v.map { |e| symbolize_keys(e) }
            else
              v
            end
          ]
        end
      ]
    when Array
      hash.map do |h|
        symbolize_keys(h)
      end
    else
      hash
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
skein-0.8.1 lib/skein/support.rb
skein-0.3.7 lib/skein/support.rb
skein-0.3.6 lib/skein/support.rb
skein-0.3.5 lib/skein/support.rb
skein-0.3.2 lib/skein/support.rb
skein-0.3.1 lib/skein/support.rb
skein-0.3.0 lib/skein/support.rb