Pastie now auto-senses if line-wrap is a bad or good idea. Feedback?
## mark a section (Learn more)
module Sortable def sort(options={}) attributes = options[:attributes].inject("["){|attribute_string, attribute| attribute_string << "object.#{attribute},"} + "]" options[:collection].sort_by{|object| eval(attributes)} end end class Person extend Sortable attr_accessor :firstname,:lastname,:age def initialize(firstname,lastname,age=0) @firstname = firstname @lastname = lastname @age = age end def name "#{@firstname} #{@lastname}" end def to_s "Hello my name is #{name} and my age is #{@age}" end end people = [Person.new("joe","blow",12),Person.new("joe","blow",89),Person.new("mary","watson",32),Person.new("annie","watson",9),Person.new("bob","builder",12)] p Person.sort(:collection=>people,:attributes=>[:lastname]) p Person.sort(:collection=>people,:attributes=>[:age]) p Person.sort(:collection=>people,:attributes=>[:lastname,:firstname,:age])
This paste will be private.
From the Design Piracy series on my blog: