sort accent char correctly
Jan Decroos
jan.decroos at groepvanroey.be
Thu Sep 26 03:05:06 EDT 2002
You can use the "sort ... by function(each)" command.
See scripts below.
Change the LocInitUpLowGlobals function if you want to add or remove chars.
***put this in a btn script ********************************
on mouseUp
put "crayon,câble,canon" into lList
sort items of lList by MyUpper(each)
answer lList
end mouseUp
******************************************************
****this can be in a stack script, stackinuse script, ...*****************
function MyUpper pData
return(uplow("u",pData))
end MyUpper
function MyLower pData
return(uplow("l",pData))
end MyLower
global gLowerChars, gLower2UpperChars, gUpperChars, gUpper2LowerChars
on LocInitUpLowGlobals
put "abcdefghijklmnopqrstuvwxyzáàâäãåçéèêëíìîïñóòôöõúùûüæøÿ" into gLowerChars
put "ABCDEFGHIJKLMNOPQRSTUVWXYZAAAAAACEEEEIIIINOOOOOUUUUÆØY" into
gLower2UpperChars
put "ABCDEFGHIJKLMNOPQRSTUVWXYZÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÆØ" into gUpperChars
put "abcdefghijklmnopqrstuvwxyzaaaaaaceeeeiiiinooooouuuuæøy" into
gUpper2LowerChars
end LocInitUpLowGlobals
-- pOtion "u[pper]","l[ower]" or "i[nitialcaps]"
-- pString : data to convert
-- pChars : in case initialcaps : the chars after which a new word starts
(default : space, return, tab and "-")
function upLow pOption, pString, pChars
put toLower(char 1 of pOption) into pOption
if the paramCount > 2 and pOption <> "i" then
StopWithMessage "UpLow : Using a third argument requires 'i' as first argument
!"
end if
if gLowerChars = "" then LocInitUpLowGlobals
set the casesensitive to true
put 0 into xx
if pOption = "u" then
repeat for each char lChar in gLowerChars
add 1 to xx
replace lChar with char xx of gLower2UpperChars in pString
end repeat
else if pOption = "l" then
repeat for each char lChar in gUpperChars
add 1 to xx
replace lChar with char xx of gUpper2LowerChars in pString
end repeat
else if pOption = "i" then
put "" into lResult
if pChars = "" then put " -"&CR&tab into pChars
put char 1 of pChars into lPrevChar -- force first char to be uppercase
repeat for each char lChar in pString
if lPrevChar is in pChars then
if lChar is in gLowerChars then put char offset(lChar,gLowerChars) of
gLower2UpperChars after lResult
else put lChar after lResult
else
if lChar is in gUpperChars then put char offset(lChar,gUpperChars) of
gUpper2LowerChars after lResult
else put lChar after lResult
end if
put lChar into lPrevChar
end repeat
put lResult into pString
end if
return pString
end upLow
on StopWithMessage pMess
answer error pMess
exit to top
end StopWithMessage
************************************************************
Hope this helps,
Jan Decroos
More information about the use-livecode
mailing list