User:ugleh Ulrik/ListKeyCase

From Second Life Wiki
Jump to navigation Jump to search

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) - TYPE_STRING))) & -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) - TYPE_STRING))) & -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>