User:Ugleh Ulrik/ListKeyCase

From Second Life Wiki
Jump to: navigation, 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

//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;
    }
}
//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;
    }
}

Caveats

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

Examples

list test = ["Apples","Bananas","Cranberrys","Donuts"];
list newtest = ListKeyCase(test,0);
//newtest now is ["apples","bananas","cranberrys","donuts"]