Sha256: ec65b36681c55b930ed085162e5055d3e9edd70d2a9c79f7855f608d7586739a
Contents?: true
Size: 1.29 KB
Versions: 3
Compression:
Stored size: 1.29 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
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
hobosupport-0.8 | lib/hobosupport/enumerable.rb |
hobosupport-0.8.1 | lib/hobosupport/enumerable.rb |
hobosupport-0.8.2 | lib/hobosupport/enumerable.rb |