How about this...
function sortAddresses pAddresses
put empty into tOutput
repeat for each line tAddress in pAddresses
if word 1 of tAddress is in "NSEW" then
put tAddress &cr after tOutput
else
put "~ "&tAddress &cr after tOutput
end if
end repeat
delete last char of tOutput
sort lines of tOutput by word 2 of each
replace "~ " with empty in tOutput
return tOutput
end sortAddresses
Terry...
On 11/05/2012, at 1:46 PM, Jim Hurley wrote:
I have a list of streets:
Main St
Oak Ave
N Auburn
Kimberly Ct
S Rector Rd
Maple Ave
W Pine St
Fairmont Ave
I want to sort them, but ignoring the compass prefix (N E S W) to
give:
N Auburn
Fairmont Ave
Kimberly Ct
Main St
Maple Ave
Oak Ave
W Pine St
S Rector Rd
The best I have come up with is performing a bubble sort where I
have control of the first word.
That script is below. This works well enough for short lists, but
not for longer lists.
It might be possible to speed it up with arrays, but that is not
what I'm after right now.
I have seen some amazing things done with custom sorts in Live Code.
I confess, I never understood them.
Is there a custom sort available in Live Code to do this kind of sort?
Thanks,
JIm Hurley
Here is the bubble sort:
on mouseUp
put field 1 into tList
put "N E S W" into tWordsToIgnore
put the number of lines in tList into n
repeat
put true into noChange
repeat with i = 1 to n-1
put theFirstWord(line i of tList, tWordsToIgnore) into tFirst
put theFirstWord(line i + 1 of tList, tWordsToIgnore) into
tSecond
--Reverse sequencial pairs if out of order.
if tFirst > tSecond then
put line i of tList into temp
put line i + 1 of tList into line i of tList
put temp into line i + 1 of tList
put false into noChange
end if
end repeat
if the shiftKey is down then exit to top --Just in case
if noChange then exit repeat ---Keep it up until no change.
end repeat
put tList into field 2
end mouseUp
function theFirstWord temp, tIgnoreWords
put word 1 of temp into tFIrstWord
if tFirstWord is among the words of tIgnoreWords then
return word 2 of temp
else
return word 1 of temp
end if
end theFirstWord
_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your
subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Dr Terry Judd
Senior Lecturer in Medical Education
Medical Education Unit
Faculty of Medicine, Dentistry & Health Sciences
The University of Melbourne
_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode