Because I live in a world of exceptions I thought I'd throw together a function that allowed the easy integration of them:
First a new List; Northern Rd Nth South St So Ave Main St South Rd Northwest Ct West East Ave Oak Ave East West Ave N Auburn W Clinton Blvd Kimberly Ct No St Sth Broadway S Rector Rd Maple Ave S Palin Hwy W Pine St Fairmont Ave And the function: on mouseUp local tList put fld 1 into tList sort lines of tList by pickStreet(each) put tList into fld 2 end mouseUp function pickStreet pName switch case ("W Clinton" is in pName) case ("S Palin" is in pName) --you get the idea return pName break case (matchText(pName,"[ENSW]\s+(.+)",tNoDirection)) case (matchText(pName,"Nth\s+(.+)",tNoDirection)) case (matchText(pName,"Sth\s+(.+)",tNoDirection)) case (matchText(pName,"East\s+(.+\s.+)",tNoDirection)) case (matchText(pName,"North\s+(.+\s.+)",tNoDirection)) case (matchText(pName,"South\s+(.+\s.+)",tNoDirection)) case (matchText(pName,"West\s+(.+\s.+)",tNoDirection)) return tNoDirection break default return pName end switch end pickStreet HTH On Fri, May 11, 2012 at 1:13 PM, Jerry Jensen <j...@jhj.com> wrote: > Yeah, but it fails if a street is named "SEW Rd" 8) > > A better line would be: > If word 1 of pName is among the words of "N S E W" then > > On May 10, 2012, at 9:25 PM, stephen barncard wrote: > > > that's the one! > > > > On Thu, May 10, 2012 at 9:23 PM, Jerry Jensen <j...@jhj.com> wrote: > > > >> This seems to do the job. No polish, but you'll get the idea. > >> .Jerry > >> > >> Aw, crap, forgot about no attachments. Here's the code: > >> > >> ------------------------------------------------ > >> > >> on mouseUp > >> local tList > >> put fld "Streets" into tList > >> sort lines of tList by pickStreet(each) > >> put tList into fld "Streets" > >> end mouseUp > >> > >> function pickStreet pName > >> if word 1 of pName is in "NSEW" then > >> return word 2 to -1 of pName > >> else > >> return pName > >> end if > >> end pickStreet > >> > >> ----------------------------------------------------- > >> > >> On May 10, 2012, at 8: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 > >> > >> _______________________________________________ > >> 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 > >> _______________________________________________ > >> 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 > >> > > > > > > > > -- > > > > > > > > Stephen Barncard > > San Francisco Ca. USA > > > > more about sqb <http://www.google.com/profiles/sbarncar> > > _______________________________________________ > > 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 > > > _______________________________________________ > 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 > _______________________________________________ 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