Order notes starting at C thru B rather than A thru G


#1

Say i have a bunch of note objects, which have a ‘name’ string, eg ‘A’
‘B#’, ‘Cb’, ‘D’ etc.

I want to order them starting at ‘C’ through to ‘B’ - what’s a simple
way to do this?

thanks
max


#2

Max W. wrote:

Say i have a bunch of note objects, which have a ‘name’ string, eg ‘A’
‘B#’, ‘Cb’, ‘D’ etc.

I want to order them starting at ‘C’ through to ‘B’ - what’s a simple
way to do this?

Define a <=> operator in your class.

class Note
include Comparable
def <=>(other)
name <=> other.name # modify this to give your desired ordering
end
end

‘include Comparable’ also gives you <, >, <= and >= operators based on
<=>


#3

Brian C. wrote:

Define a <=> operator in your class.

class Note
include Comparable
def <=>(other)
name <=> other.name # modify this to give your desired ordering
end
end

‘include Comparable’ also gives you <, >, <= and >= operators based on
<=>

thanks!


#4

On 06.01.2009 12:17, Max W. wrote:

‘include Comparable’ also gives you <, >, <= and >= operators based on
<=>

thanks!

An alternative approach is to do

notes.sort_by {|note| … appropriate extraction here… }

or

notes.sort {|note_a, note_b| … desired ordering code … }

Cheers

robert