Guest User

Untitled

a guest
Jul 16th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.66 KB | None | 0 0
  1. # Add Array#sort_by!
  2. class Array
  3. def sort_by! &block
  4. replace(sort_by(&block))
  5. end
  6. end
  7.  
  8.  
  9. class Foo
  10. class << self
  11. attr_accessor :subclasses, :priority
  12. end
  13. self.subclasses = []
  14. # 1 is highest, lower is low
  15. self.priority = 5
  16.  
  17. def self.inherited klass
  18. subclasses << klass
  19. end
  20.  
  21. # Call after you've loaded all subclasses, so we can sort them properly
  22. def self.order_subclasses
  23. self.subclasses.sort_by!(&:priority).reverse!
  24. end
  25. end
  26.  
  27. class Bar < Foo
  28. self.priority = 10
  29. end
  30.  
  31. class Sed < Foo
  32. self.priority = 15
  33. end
  34.  
  35. class Fred < Foo
  36. self.priority = 3
  37. end
  38.  
  39. Foo.order_subclasses
  40. p Foo.subclasses
  41. # should be [Sed, Bar, Fred]
  42.  
  43. # >> [Sed, Bar, Fred]
Add Comment
Please, Sign In to add comment