Class: Hash

Inherits
Object show all
Defined in
lib/kyanite/hash.rb,
lib/kyanite/dictionary.rb
Subclasses
Optimizer

Hash Additions

Kyanite definitions

Dictionary, Hash

Kyanite tests and examples

TestKyaniteHash

Usage

require 'kyanite/hash'

Instance Method Summary (collapse)

Instance Method Details

- (Hash) arrayize!(*keys)

Forces some options in a methods options hash to be an array. Useful if both individual values ​​and arrays are allowed as an input option.

Example:

options = { :skip => 1, :debug => true, :test => false }
puts options 
=> {:skip=>1, :debug=>true, :test=>false}

options.arrayize!(:skip, :debug)
puts options 
=> {:skip=>[1], :debug=>[true], :test=>false}

Parameters:

  • keys (Key, Array of keys)

    Keys to process

Returns:



69
70
71
72
73
74
75
76
77
# File 'lib/kyanite/hash.rb', line 69

def arrayize!(*keys)
  keys.each do |k|
    if self[k]  &&  !self[k].respond_to?(:first) 
      self[k] =  [self[k]]
    end
  end
      
  self
end

- (Hash) compact_keys!

Deletes all key-value pairs with nil-keys in-place.

Returns:

  • (Hash)

    in-place modificated



28
29
30
# File 'lib/kyanite/hash.rb', line 28

def compact_keys!
    delete_if {|key, value| key.nil? }
end

- (Hash) compact_values!

Deletes all key-value pairs with nil-values in-place.

Returns:

  • (Hash)

    in-place modificated



35
36
37
# File 'lib/kyanite/hash.rb', line 35

def compact_values!
    delete_if {|key, value| value.nil? }
end

- (Hash) delete_key(key)

Deletes the key-value pair with a given key in-place. Returns the modificated hash (in contrast to Rubys delete method that returns the deleted key-value pair! ).

Returns:

  • (Hash)

    in-place modificated



43
44
45
# File 'lib/kyanite/hash.rb', line 43

def delete_key(key)
  delete_if { |k,v| k == key }
end

- (Hash) delete_value(value)

Deletes all key-value pairs with a given value in-place. Returns the modificated hash (in contrast to Rubys delete method that returns the deleted key-value pair! ).

Returns:

  • (Hash)

    in-place modificated



50
51
52
# File 'lib/kyanite/hash.rb', line 50

def delete_value(value)
  delete_if { |k,v| v == value }
end

- (Array) distribution(mode = :size)

Returns the distribution of size, class or any other characteristic of the enumerated elements. The keys of the hash will be ignored. See also Enumerable#distribution, examples there.

Returns:



95
96
97
98
99
100
101
102
103
104
105
106
# File 'lib/kyanite/hash.rb', line 95

def distribution( mode = :size)
  verteilung = Hash.new
  each do | key, element |
    value = element.respond(mode)
    if verteilung.has_key?(value)
      verteilung[value] += 1
    else
      verteilung[value] = 1
    end # if      
  end #each
  verteilung.to_a.sort   
end

- (Object) first

Any value

Returns:

  • any value



111
112
113
114
115
# File 'lib/kyanite/hash.rb', line 111

def first
  self.each do |key, value|
    return value
  end  
end

- (Object) fuzzyget(key, level = 3)

Accesses the hash with keys that do not match exactly



82
83
84
85
86
87
88
89
# File 'lib/kyanite/hash.rb', line 82

def fuzzyget(key, level = 3)
  try = self[key]
  return try    if try  ||  level <= 0
  try = self[key.to_s.downcase2]
  return try    if try  ||  level <= 1   
  try = self[key.to_s.mysqlize]
  return try    if try  ||  level <= 2       
end

- (Object) last

Any other value

Returns:

  • any other value



119
120
121
122
123
124
125
126
127
128
129
# File 'lib/kyanite/hash.rb', line 119

def last
  first = nil
  self.each do |key, value|
    if first.nil?
      first = value
      next
    else
      return value
    end #if
  end #do 
end

- (Dictionary) to_dictionary

Returns:



61
62
63
64
65
66
67
# File 'lib/kyanite/dictionary.rb', line 61

def to_dictionary
  result = Dictionary.new
    self.each do | key, value |
      result[key] = value
    end
  result
end