Sha256: b526508b18bdc2c676f9b9dd601f5f3f9db7ba36ba03eae77ffb5a371fdc7645
Contents?: true
Size: 1.37 KB
Versions: 1
Compression:
Stored size: 1.37 KB
Contents
require 'ruby2ruby' class Object # Calls the block in the context of self, and returns self. def extended(&block) self.send(:eval, block.to_ruby).call self end end class Proc # Changes the context of a proc so that 'self' is the klass_or_obj passed. def in_context(klass_or_obj) klass_or_obj.send(:eval, self.to_ruby) end end class Hash def stringify_keys! self.each_key {|k| self[k.to_s] = self.delete(k)} end def crawl(&block) raise ArgumentError, "no block given" unless block_given? self.each do |k,v| case block.arity when 1 yield(v) when 2 yield(k,v) when 3 yield(self,k,v) v = self[k] end if v.is_a?(Array) v.crawl(&block) elsif v.is_a?(Hash) v.crawl(&block) end end end end class Array def crawl(&block) raise ArgumentError, "no block given" unless block_given? self.each do |v| k = self v = case block.arity when 1 yield(v) when 2 yield(k,v) when 3 yield(self,k,v) end if v.is_a?(Array) v.crawl(&block) elsif v.is_a?(Hash) v.crawl(&block) end end end end module Enumerable def group_by inject({}) do |groups, element| (groups[yield(element)] ||= []) << element groups end end if RUBY_VERSION < '1.9' end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
simplemapper-0.0.1 | lib/simple_mapper/support/core_ext.rb |