Difference between revisions of "User:Ugleh Ulrik/ListKeyCase"

From Second Life Wiki
Jump to navigation Jump to search
(Created page with '{{LSL_Function |func=ListKeyCase |mode=user |p1_type=list|p1_name=src|p1_desc=List to change case |p2_type=integer|p2_name=case|p2_desc=1 is Upper, 0 is Lower. |return_type=list ...')
 
(converting other types to strings might not be what the user wants.)
Line 8: Line 8:
|func_footnote=
|func_footnote=
See also: [[List|Lists]]
See also: [[List|Lists]]
|spec=<lsl>list ListKeyCase(list src,integer case){
|spec=<lsl>//This version converts all list items into strings.
list new;
list ListKeyCase(list src,integer case){
integer i;
    list new;
if (case){
    integer i;
    do
    if (case){
    new += llToUpper(llList2String(src,i));
        do
    while (llGetListLength(src)>++i);
            new += llToUpper(llList2String(src,i));
    return new;
        while (llGetListLength(src)>++i);
}else{
        return new;
    do
    }/*else*/{
    new += llToLower(llList2String(src,i));
        do
     while (llGetListLength(src)>++i);
            new += llToLower(llList2String(src,i));
     return new;
        while (llGetListLength(src)>++i);
}
        return new;
     }
}</lsl>
 
<lsl>//This version preserves the types of all list items.
list ListKeyCase(list src, integer case) {
    list new;
    integer i = 0;
    integer j = llGetListLength(src);
    integer type;
    if (case) {
        do {
            if(((type = (llGetListEntryType(src, i) - 3))) & -2) {
                new += llList2List(src, i, i);
            } else if(type) {
                new += (key)llToUpper(llList2String(src,i));
            } else {
                new += llToUpper(llList2String(src,i));
            }
        } while (j>++i);
        return new;
     } /*else*/ {
        do {
            if(((type = (llGetListEntryType(src, i) - 3))) & -2) {
                new += llList2List(src, i, i);
            } else if(type) {
                new += (key)llToLower(llList2String(src,i));
            } else {
                new += llToLower(llList2String(src,i));
            }
        } while (j>++i);
        return new;
    }
}
}
</lsl>
</lsl>
|caveats
|caveats=*[[Key]] equality (and inequality) testing is case sensitive.
|examples=<lsl>
|examples=<lsl>
list test = ["Apples","Bananas","Cranberrys","Donuts"];
list test = ["Apples","Bananas","Cranberrys","Donuts"];

Revision as of 23:22, 7 May 2010

Summary

Function: list ListKeyCase( list src, integer case );

Returns a list that is a copy of src with all lower-case letters or all upper-case letters.

• list src List to change case
• integer case 1 is Upper, 0 is Lower.

See also: Lists

Specification

<lsl>//This version converts all list items into strings. list ListKeyCase(list src,integer case){

   list new;
   integer i;
   if (case){
       do
           new += llToUpper(llList2String(src,i));
       while (llGetListLength(src)>++i);
       return new;
   }/*else*/{
       do
           new += llToLower(llList2String(src,i));
       while (llGetListLength(src)>++i);
       return new;
   }

}</lsl>

<lsl>//This version preserves the types of all list items. list ListKeyCase(list src, integer case) {

   list new;
   integer i = 0;
   integer j = llGetListLength(src);
   integer type;
   if (case) {
       do {
           if(((type = (llGetListEntryType(src, i) - 3))) & -2) {
               new += llList2List(src, i, i);
           } else if(type) {
               new += (key)llToUpper(llList2String(src,i));
           } else {
               new += llToUpper(llList2String(src,i));
           }
       } while (j>++i);
       return new;
   } /*else*/ {
       do {
           if(((type = (llGetListEntryType(src, i) - 3))) & -2) {
               new += llList2List(src, i, i);
           } else if(type) {
               new += (key)llToLower(llList2String(src,i));
           } else {
               new += llToLower(llList2String(src,i));
           }
       } while (j>++i);
       return new;
   }

} </lsl>

Caveats

  • Key equality (and inequality) testing is case sensitive.

Examples

<lsl> list test = ["Apples","Bananas","Cranberrys","Donuts"]; list newtest = ListKeyCase(test,0);

//newtest now is ["apples","bananas","cranberrys","donuts"]</lsl>