Guest User

Untitled

a guest
Feb 21st, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.88 KB | None | 0 0
  1. # Useful Hash and Array extensions
  2. # works well with Sams Extlib
  3. #
  4.  
  5. class Hash
  6.  
  7. def with(overrides = {})
  8. self.merge overrides
  9. end
  10.  
  11. def symbolize_keys!
  12. replace(inject({}) { |h,(k,v)| h[k.to_sym] = v; h })
  13. end
  14.  
  15. def stringify_keys!
  16. replace(inject({}) { |h,(k,v)| h[k.to_s] = v; h })
  17. end
  18.  
  19. def downcase_keys!
  20. replace(inject({}) { |h,(k,v)| h[k.downcase] = v; h })
  21. end
  22.  
  23. def downcase_values!
  24. replace(inject({}) { |h,(k,v)|
  25. h[k] = (v.instance_of? String) ? v.downcase : v ; h})
  26. end
  27.  
  28. end
  29.  
  30. class Array
  31. def except(*rejected)
  32. arr = self.dup
  33. rejected.each {|v| arr.delete(v) }
  34. arr
  35. end
  36. end
  37.  
  38. class Object
  39.  
  40. def self.direct_descendants
  41. arr = []
  42. ObjectSpace.each_object do |obj|
  43. if obj.class == Class and obj.superclass == self
  44. arr << obj
  45. end
  46. end
  47. arr
  48. end
  49.  
  50. end
Add Comment
Please, Sign In to add comment