Difference between revisions of "EscapeXML"

From Second Life Wiki
Jump to navigation Jump to search
(→‎EscapeXML: the LSL compiler sucks, the function was slow, we parse it backwords so we don't have to fudge the indexes, this isn't the fastest solution.)
m
Line 1: Line 1:
=====EscapeXML=====
=====EscapeXML=====


<lsl>
<lsl>// Escape standard reserved XML chars with entities
// Escape standard reserved XML chars with entities
// Copyright 2008, JB Kraft & Strife Onizuka
// Copyright 2008, JB Kraft & Strife Onizuka
// Released under BSD license
// Released under BSD license
Line 37: Line 36:
         llSay(0, escapeXML("<Black> & \"White\" & 'Red' & <Green>"));
         llSay(0, escapeXML("<Black> & \"White\" & 'Red' & <Green>"));
     }
     }
}
}</lsl>
 


</lsl>
[[Category:LSL Examples]]
[[Category:LSL Examples]]

Revision as of 01:15, 9 March 2008

EscapeXML

<lsl>// Escape standard reserved XML chars with entities // Copyright 2008, JB Kraft & Strife Onizuka // Released under BSD license // http://www.opensource.org/licenses/bsd-license.php


// ------------------------------------------------------------------------ // escape standard reserved XML chars with entities // ------------------------------------------------------------------------ string escapeXML( string str ) {

   integer i = llStringLength( str );
   if(i)
   {
       string unescapedChars = "&\"'<>"; 
       list escapedChars = ["&", """, "'", "<", ">"];
       integer ndx;
       do
           if( ~(ndx = llSubStringIndex( unescapedChars, llGetSubString(str, --i, i))) )
               str = llInsertString( llDeleteSubString( str, i, i), i, llList2String( escapedChars, ndx));
       while(i);
   }
   return str;

}

// ------------------------------------------------------------------------ // D E F A U L T // ------------------------------------------------------------------------ default {

   state_entry()
   {
       llSay(0, escapeXML("<Black> & \"White\" & 'Red' & <Green>"));
   }

}</lsl>