Sha256: 1209d2f9fd102a79437b1cbb5def8cdd5d683b04557cb4d60e6c4c40762df197
Contents?: true
Size: 1.32 KB
Versions: 1
Compression:
Stored size: 1.32 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 = block_given? ? yield(x) : 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
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
hobosupport-0.8.8 | lib/hobo_support/enumerable.rb |