Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Add Array#sort_by!
- class Array
- def sort_by! &block
- replace(sort_by(&block))
- end
- end
- class Foo
- class << self
- attr_accessor :subclasses, :priority
- end
- self.subclasses = []
- # 1 is highest, lower is low
- self.priority = 5
- def self.inherited klass
- subclasses << klass
- end
- # Call after you've loaded all subclasses, so we can sort them properly
- def self.order_subclasses
- self.subclasses.sort_by!(&:priority).reverse!
- end
- end
- class Bar < Foo
- self.priority = 10
- end
- class Sed < Foo
- self.priority = 15
- end
- class Fred < Foo
- self.priority = 3
- end
- Foo.order_subclasses
- p Foo.subclasses
- # should be [Sed, Bar, Fred]
- # >> [Sed, Bar, Fred]
Add Comment
Please, Sign In to add comment