Sha256: f08feeb0b9a270a54d7bc40a44416c54d5cc6536a7403d2a64b3a1ab33101646
Contents?: true
Size: 1.3 KB
Versions: 5
Compression:
Stored size: 1.3 KB
Contents
# This mixin depends on three methods: #index( i, v ) where _index_ is an Integer, # and #indicies. require 'mega/nack' Iterable = Enumerable module Indexable def indicies # end def fetch( i ) # raise end # if writable def store( i, v ) # end def delete( i ) # end # derivative methods def keys ; indicies ; end def []( i ) fetch( i ) end def []=( i, v ) store( i, v ) end # Returns an array of all values for the given list of indexes. def fetch_all( *x ) x = indicies if x.empty? x.collect { |i| fetch(i) } end # Return true if the given index is viable. def index?( i ) indicies.include?( i ) end alias :key?, :index? def delete_all( *x ) x.each { |i| delete( i ) } end def delete_values( *w ) indicies.each { |i| delete( i ) if w.include?( fetch(i) ) } end # Returns a random value. # def rand_value fetch( indicies.at( rand( indicies.size ) ) ) end alias_method :at_rand, :rand_value # Return a random index. # def rand_index indicies.at( rand( indicies.size ) ) end alias_method :rand_key, :rand_index # Returns a random pair of an index and its value in a two-element array. # def rand_pair i = indicies.at( rand( indicies.size ) ) [ i, fetch(i) ] end end
Version data entries
5 entries across 5 versions & 1 rubygems
Version | Path |
---|---|
facets-1.4.1 | forge/more/indexable.rb |
facets-1.4.2 | forge/more/indexable.rb |
facets-1.4.3 | forge/more/indexable.rb |
facets-1.4.4 | forge/more/indexable.rb |
facets-1.4.5 | snip/more/indexable.rb |