Sha256: 69ff54753254669e851c370d177e611b5a6fe9f31eb9651bce040460b3f1d49f
Contents?: true
Size: 1.3 KB
Versions: 5
Compression:
Stored size: 1.3 KB
Contents
module Enumerable def map_and_find(not_found=nil) each do |x| val = yield(x) return val if val end not_found end def map_with_index res = [] each_with_index {|x, i| res << yield(x, i)} res end def build_hash res = {} each do |x| pair = yield x res[pair.first] = pair.last if pair end res end def map_hash res = {} each do |x| v = yield x res[x] = v end res end def rest self[1..-1] || [] end class MultiSender undef_method(*(instance_methods - %w*__id__ __send__*)) def initialize(enumerable, method) @enumerable = enumerable @method = method end def method_missing(name, *args, &block) @enumerable.send(@method) { |x| x.send(name, *args, &block) } end end def *() MultiSender.new(self, :map) end def where MultiSender.new(self, :select) end def where_not MultiSender.new(self, :reject) end def drop_while drop = 0 drop += 1 while yield(self[drop]) self[drop..-1] end def take_while take = 0 take += 1 while yield(self[take]) self[0..take-1] end end class Object def in?(enum) !enum.nil? && enum.include?(self) end def not_in?(enum) enum.nil? || !enum.include?(self) end end
Version data entries
5 entries across 5 versions & 1 rubygems