Class: Hash
Overview
Hash extension.
Class Method Summary collapse
- .combine(keys, values) ⇒ Object
- .create(default = nil, hash = nil, &block) ⇒ Object
- .define(values = { }, default = nil, &block) ⇒ Object
Instance Method Summary collapse
- #all_pairs?(&block) ⇒ Boolean
- #asort(&block) ⇒ Object
- #asort!(&block) ⇒ Object
- #avg ⇒ Object (also: #average)
-
#clean(value = nil) ⇒ Object
(also: #compact)
Removes given value from the hash.
-
#clean!(value = nil) ⇒ Object
(also: #compact!)
Removes given value from the hash in place.
- #first_key ⇒ Object
- #first_value ⇒ Object
- #flip ⇒ Object
- #flip! ⇒ Object
- #get_items(*args) ⇒ Object
- #get_pairs(*args) ⇒ Object
- #get_values(*args) ⇒ Object
- #has_all?(keys) ⇒ Boolean (also: #has_keys?)
- #has_some?(keys) ⇒ Boolean
- #hash? ⇒ Boolean
- #keys_to_sym ⇒ Object (also: #symbolize_keys)
- #keys_to_sym! ⇒ Object (also: #symbolize_keys!)
- #ksort(&block) ⇒ Object
- #ksort!(&block) ⇒ Object
- #map_keys(&block) ⇒ Object (also: #collect_keys)
- #map_keys!(&block) ⇒ Object (also: #collect_keys!)
- #map_pairs(&block) ⇒ Object (also: #collect_pairs)
- #map_pairs!(&block) ⇒ Object (also: #collect_pairs!)
- #map_values(&block) ⇒ Object (also: #collect_values)
- #map_values!(&block) ⇒ Object (also: #collect_values!)
- #recreate ⇒ Object
- #recreate! ⇒ Object
- #remove!(&block) ⇒ Object
- #reverse ⇒ Object
- #reverse! ⇒ Object
- #some?(&block) ⇒ Boolean
- #some_pairs?(&block) ⇒ Boolean
- #sort!(&block) ⇒ Object
- #sum ⇒ Object
- #take_items(*args) ⇒ Object
- #take_pairs(*args) ⇒ Object
- #take_values(*args) ⇒ Object
- #to_h(mode = nil) ⇒ Object
Class Method Details
.combine(keys, values) ⇒ Object
605 606 607 608 609 610 611 612 |
# File 'lib/hash-utils/hash.rb', line 605 def self.combine(keys, values) result = { } keys.each_index do |i| result[keys[i]] = values[i] end return result end |
.create(default = nil, hash = nil, &block) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/hash-utils/hash.rb', line 43 def self.create(default = nil, hash = nil, &block) if not hash.nil? hash = hash.dup else hash = { } end hash.default = default hash.default_proc = block if not block.nil? return hash end |
.define(values = { }, default = nil, &block) ⇒ Object
25 26 27 28 |
# File 'lib/hash-utils/hash.rb', line 25 def self.define(values = { }, default = nil, &block) hash = self[values] self::create(default, hash, &block) end |
Instance Method Details
#all_pairs?(&block) ⇒ Boolean
362 363 364 365 366 367 368 369 370 371 372 |
# File 'lib/hash-utils/hash.rb', line 362 def all_pairs?(&block) return true if self.empty? self.each_pair do |k, v| if block.call(k, v) == false return false end end return true end |
#asort(&block) ⇒ Object
492 493 494 495 496 497 |
# File 'lib/hash-utils/hash.rb', line 492 def asort(&block) if block.nil? block = Proc::new { |a, b| a <=> b } end Hash[self.sort { |a, b| block.call(a[1], b[1]) }] end |
#asort!(&block) ⇒ Object
510 511 512 |
# File 'lib/hash-utils/hash.rb', line 510 def asort!(&block) self.replace(self.asort(&block)) end |
#avg ⇒ Object Also known as: average
782 783 784 |
# File 'lib/hash-utils/hash.rb', line 782 def avg self.values.avg end |
#clean(value = nil) ⇒ Object Also known as: compact
Removes given value from the hash. It’s nil
by default, so behaves just as #compact.
141 142 143 |
# File 'lib/hash-utils/hash.rb', line 141 def clean(value = nil) self.reject { |k, v| v === value } end |
#clean!(value = nil) ⇒ Object Also known as: compact!
Removes given value from the hash in place. It’s nil
by default, so behaves just as #compact.
154 155 156 |
# File 'lib/hash-utils/hash.rb', line 154 def clean!(value = nil) self.reject! { |k, v| v === value } end |
#first_key ⇒ Object
864 865 866 867 |
# File 'lib/hash-utils/hash.rb', line 864 def first_key first = self.first first ? first.first : nil end |
#first_value ⇒ Object
878 879 880 881 |
# File 'lib/hash-utils/hash.rb', line 878 def first_value first = self.first first ? first.second : nil end |
#flip ⇒ Object
813 814 815 |
# File 'lib/hash-utils/hash.rb', line 813 def flip self.map_pairs { |k, v| [v, k] } end |
#flip! ⇒ Object
827 828 829 |
# File 'lib/hash-utils/hash.rb', line 827 def flip! self.map_pairs! { |k, v| [v, k] } end |
#get_items(*args) ⇒ Object
649 650 651 652 653 654 655 656 |
# File 'lib/hash-utils/hash.rb', line 649 def get_items(*args) result = { } self.get_pairs(*args) do |key, value| result[key] = value end return result end |
#get_pairs(*args) ⇒ Object
625 626 627 628 629 630 631 |
# File 'lib/hash-utils/hash.rb', line 625 def get_pairs(*args) self.take_pairs(*args) do |i| if not i[1].nil? yield i end end end |
#get_values(*args) ⇒ Object
672 673 674 675 676 677 678 679 |
# File 'lib/hash-utils/hash.rb', line 672 def get_values(*args) result = [ ] self.get_pairs(*args) do |key, value| result << value end return result end |
#has_all?(keys) ⇒ Boolean Also known as: has_keys?
553 554 555 556 557 558 559 560 561 |
# File 'lib/hash-utils/hash.rb', line 553 def has_all?(keys) keys.each do |key| if not self.has_key? key return false end end return true end |
#has_some?(keys) ⇒ Boolean
577 578 579 580 581 582 583 584 585 |
# File 'lib/hash-utils/hash.rb', line 577 def has_some?(keys) keys.each do |key| if self.has_key? key return true end end return false end |
#hash? ⇒ Boolean
799 800 801 |
# File 'lib/hash-utils/hash.rb', line 799 def hash? true end |
#keys_to_sym ⇒ Object Also known as: symbolize_keys
315 316 317 318 319 320 321 322 323 |
# File 'lib/hash-utils/hash.rb', line 315 def keys_to_sym self.map_keys do |k| if k.kind_of? String k.to_sym else k end end end |
#keys_to_sym! ⇒ Object Also known as: symbolize_keys!
339 340 341 |
# File 'lib/hash-utils/hash.rb', line 339 def keys_to_sym! self.replace(self.keys_to_sym) end |
#ksort(&block) ⇒ Object
454 455 456 457 458 459 |
# File 'lib/hash-utils/hash.rb', line 454 def ksort(&block) if block.nil? block = Proc::new { |a, b| a <=> b } end Hash[self.sort { |a, b| block.call(a[0], b[0]) }] end |
#ksort!(&block) ⇒ Object
472 473 474 |
# File 'lib/hash-utils/hash.rb', line 472 def ksort!(&block) self.replace(self.ksort(&block)) end |
#map_keys(&block) ⇒ Object Also known as: collect_keys
236 237 238 239 240 |
# File 'lib/hash-utils/hash.rb', line 236 def map_keys(&block) self.map_pairs do |k, v| [block.call(k), v] end end |
#map_keys!(&block) ⇒ Object Also known as: collect_keys!
257 258 259 |
# File 'lib/hash-utils/hash.rb', line 257 def map_keys!(&block) self.replace(self.map_keys(&block)) end |
#map_pairs(&block) ⇒ Object Also known as: collect_pairs
191 192 193 194 195 196 197 198 199 200 |
# File 'lib/hash-utils/hash.rb', line 191 def map_pairs(&block) _new = self.recreate self.each_pair do |k, v| new_k, new_v = block.call(k, v) _new[new_k] = new_v end return _new end |
#map_pairs!(&block) ⇒ Object Also known as: collect_pairs!
217 218 219 |
# File 'lib/hash-utils/hash.rb', line 217 def map_pairs!(&block) self.replace(self.map_pairs(&block)) end |
#map_values(&block) ⇒ Object Also known as: collect_values
276 277 278 279 280 |
# File 'lib/hash-utils/hash.rb', line 276 def map_values(&block) self.map_pairs do |k, v| [k, block.call(v)] end end |
#map_values!(&block) ⇒ Object Also known as: collect_values!
297 298 299 |
# File 'lib/hash-utils/hash.rb', line 297 def map_values!(&block) self.replace(self.map_values(&block)) end |
#recreate ⇒ Object
84 85 86 |
# File 'lib/hash-utils/hash.rb', line 84 def recreate self.class::create(self.default, &self.default_proc) end |
#recreate! ⇒ Object
98 99 100 |
# File 'lib/hash-utils/hash.rb', line 98 def recreate! self.replace(self.recreate) end |
#remove!(&block) ⇒ Object
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
# File 'lib/hash-utils/hash.rb', line 113 def remove!(&block) result = self.recreate delete = [ ] self.each_pair do |k, v| if block.call(k, v) result[k] = v delete << k end end delete.each do |k| self.delete(k) end return result end |
#reverse ⇒ Object
526 527 528 |
# File 'lib/hash-utils/hash.rb', line 526 def reverse Hash[self.to_a.reverse] end |
#reverse! ⇒ Object
539 540 541 |
# File 'lib/hash-utils/hash.rb', line 539 def reverse! self.replace(self.reverse) end |
#some?(&block) ⇒ Boolean
385 386 387 388 389 390 391 |
# File 'lib/hash-utils/hash.rb', line 385 def some?(&block) self.each_value do |v| return true if block.call(v) end return false end |
#some_pairs?(&block) ⇒ Boolean
404 405 406 407 408 409 410 |
# File 'lib/hash-utils/hash.rb', line 404 def some_pairs?(&block) self.each_pair do |pair| return true if block.call(pair) end return false end |
#sort!(&block) ⇒ Object
435 436 437 |
# File 'lib/hash-utils/hash.rb', line 435 def sort!(&block) self.replace(Hash[self.sort(&block)]) end |
#sum ⇒ Object
764 765 766 |
# File 'lib/hash-utils/hash.rb', line 764 def sum self.values.sum end |
#take_items(*args) ⇒ Object
714 715 716 717 718 719 720 721 |
# File 'lib/hash-utils/hash.rb', line 714 def take_items(*args) result = { } self.take_pairs(*args) do |key, value| result[key] = value end return result end |
#take_pairs(*args) ⇒ Object
692 693 694 695 696 |
# File 'lib/hash-utils/hash.rb', line 692 def take_pairs(*args) args.each do |i| yield [i, self[i]] end end |
#take_values(*args) ⇒ Object
738 739 740 741 742 743 744 745 |
# File 'lib/hash-utils/hash.rb', line 738 def take_values(*args) result = [ ] self.take_pairs(*args) do |key, value| result << value end return result end |
#to_h(mode = nil) ⇒ Object
421 422 423 |
# File 'lib/hash-utils/hash.rb', line 421 def to_h(mode = nil) self end |