//////////////////////////////////////////////////////////////////////////////// // // Licensed to the Apache Software Foundation (ASF) under one or more // contributor license agreements. See the NOTICE file distributed with // this work for additional information regarding copyright ownership. // The ASF licenses this file to You under the Apache License, Version 2.0 // (the "License"); you may not use this file except in compliance with // the License. You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // //////////////////////////////////////////////////////////////////////////////// package mx.utils { /** * The RPCStringUtil class is a subset of StringUtil, removing methods * that create dependency issues when RPC messages are in a bootstrap loader. * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ public class RPCStringUtil { include "../core/Version.as"; //-------------------------------------------------------------------------- // // Class methods // //-------------------------------------------------------------------------- /** * Removes all whitespace characters from the beginning and end * of the specified string. * * @param str The String whose whitespace should be trimmed. * * @return Updated String where whitespace was removed from the * beginning and end. * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ public static function trim(str:String):String { if (str == null) return ''; var startIndex:int = 0; while (isWhitespace(str.charAt(startIndex))) ++startIndex; var endIndex:int = str.length - 1; while (isWhitespace(str.charAt(endIndex))) --endIndex; if (endIndex >= startIndex) return str.slice(startIndex, endIndex + 1); else return ""; } /** * Removes all whitespace characters from the beginning and end * of each element in an Array, where the Array is stored as a String. * * @param value The String whose whitespace should be trimmed. * * @param separator The String that delimits each Array element in the string. * * @return Updated String where whitespace was removed from the * beginning and end of each element. * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ public static function trimArrayElements(value:String, delimiter:String):String { if (value != "" && value != null) { var items:Array = value.split(delimiter); var len:int = items.length; for (var i:int = 0; i < len; i++) { items[i] = trim(items[i]); } if (len > 0) { value = items.join(delimiter); } } return value; } /** * Returns true if the specified string is * a single space, tab, carriage return, newline, or formfeed character. * * @param str The String that is is being queried. * * @return true if the specified string is * a single space, tab, carriage return, newline, or formfeed character. * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ public static function isWhitespace(character:String):Boolean { switch (character) { case " ": case "\t": case "\r": case "\n": case "\f": return true; default: return false; } } /** * Substitutes "{n}" tokens within the specified string * with the respective arguments passed in. * * @param str The string to make substitutions in. * This string can contain special tokens of the form * {n}, where n is a zero based index, * that will be replaced with the additional parameters * found at that index if specified. * * @param rest Additional parameters that can be substituted * in the str parameter at each {n} * location, where n is an integer (zero based) * index value into the array of values specified. * If the first parameter is an array this array will be used as * a parameter list. * This allows reuse of this routine in other methods that want to * use the ... rest signature. * For example
     *     public function myTracer(str:String, ... rest):void
     *     { 
     *         label.text += StringUtil.substitute(str, rest) + "\n";
     *     } 
* * @return New string with all of the {n} tokens * replaced with the respective arguments specified. * * @example * * var str:String = "here is some info '{0}' and {1}"; * trace(StringUtil.substitute(str, 15.4, true)); * * // this will output the following string: * // "here is some info '15.4' and true" * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ public static function substitute(str:String, ... rest):String { if (str == null) return ''; // Replace all of the parameters in the msg string. var len:uint = rest.length; var args:Array; if (len == 1 && rest[0] is Array) { args = rest[0] as Array; len = args.length; } else { args = rest; } for (var i:int = 0; i < len; i++) { str = str.replace(new RegExp("\\{"+i+"\\}", "g"), args[i]); } return str; } } }