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

From Second Life Wiki
Jump to navigation Jump to search
(converting other types to strings might not be what the user wants.)
m (<lsl> tag to <source>)
 
(3 intermediate revisions by 2 users not shown)
Line 8: Line 8:
|func_footnote=
|func_footnote=
See also: [[List|Lists]]
See also: [[List|Lists]]
|spec=<lsl>//This version converts all list items into strings.
|spec=<source lang="lsl2">//This version converts all list items into strings.
list ListKeyCase(list src,integer case){
list ListKeyCase(list src,integer case){
     list new;
     list new;
Line 23: Line 23:
         return new;
         return new;
     }
     }
}</lsl>
}</source>


<lsl>//This version preserves the types of all list items.
<source lang="lsl2">//This version preserves the types of all list items.
list ListKeyCase(list src, integer case) {
list ListKeyCase(list src, integer case) {
     list new;
     list new;
Line 33: Line 33:
     if (case) {
     if (case) {
         do {
         do {
             if(((type = (llGetListEntryType(src, i) - 3))) & -2) {
             if(((type = (llGetListEntryType(src, i) - TYPE_STRING))) & -2) {
                 new += llList2List(src, i, i);
                 new += llList2List(src, i, i);
             } else if(type) {
             } else if(type) {
Line 44: Line 44:
     } /*else*/ {
     } /*else*/ {
         do {
         do {
             if(((type = (llGetListEntryType(src, i) - 3))) & -2) {
             if(((type = (llGetListEntryType(src, i) - TYPE_STRING))) & -2) {
                 new += llList2List(src, i, i);
                 new += llList2List(src, i, i);
             } else if(type) {
             } else if(type) {
Line 55: Line 55:
     }
     }
}
}
</lsl>
</source>
|caveats=*[[Key]] equality (and inequality) testing is case sensitive.
|caveats=*[[Key]] equality (and inequality) testing is case sensitive.
|examples=<lsl>
|examples=<source lang="lsl2">
list test = ["Apples","Bananas","Cranberrys","Donuts"];
list test = ["Apples","Bananas","Cranberrys","Donuts"];
list newtest = ListKeyCase(test,0);
list newtest = ListKeyCase(test,0);
//newtest now is ["apples","bananas","cranberrys","donuts"]</lsl>
//newtest now is ["apples","bananas","cranberrys","donuts"]</source>
|helpers
|helpers
|notes
|notes
Line 67: Line 67:
|also_articles
|also_articles
|cat1=Examples
|cat1=Examples
|cat2
|cat2=User-Defined_Functions
|cat3
|cat3
|cat4
|cat4
}}
}}

Latest revision as of 14:45, 22 January 2015

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"]