This is an automated email from the ASF dual-hosted git repository.

alinakazi pushed a commit to branch feature/MXRoyale
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git


The following commit(s) were added to refs/heads/feature/MXRoyale by this push:
     new c1380ad  URLUtil.as Added
c1380ad is described below

commit c1380ad7dd9c3a70ecfa6e9a78c34bd2d53f6db5
Author: alinakazi <[email protected]>
AuthorDate: Tue May 8 15:07:07 2018 +0500

    URLUtil.as Added
---
 .../MXRoyale/src/main/royale/mx/utils/URLUtil.as   | 773 +++++++++++++++++++++
 1 file changed, 773 insertions(+)

diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/utils/URLUtil.as 
b/frameworks/projects/MXRoyale/src/main/royale/mx/utils/URLUtil.as
new file mode 100644
index 0000000..24e7715
--- /dev/null
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/utils/URLUtil.as
@@ -0,0 +1,773 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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
+{
+    
+   // import mx.messaging.config.LoaderConfig;
+    
+    /**
+     *  The URLUtil class is a static class with methods for working with
+     *  full and relative URLs within Flex.
+     *  
+     *  @see mx.managers.BrowserManager
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public class URLUtil
+    {
+        
//--------------------------------------------------------------------------
+        //
+        // Private Static Constants
+        //
+        
//--------------------------------------------------------------------------
+        
+        /**
+         *  @private 
+         */
+        /* private static const SQUARE_BRACKET_LEFT:String = "]";
+        private static const SQUARE_BRACKET_RIGHT:String = "[";
+        private static const SQUARE_BRACKET_LEFT_ENCODED:String = 
encodeURIComponent(SQUARE_BRACKET_LEFT);
+        private static const SQUARE_BRACKET_RIGHT_ENCODED:String = 
encodeURIComponent(SQUARE_BRACKET_RIGHT); */
+        
+        
//--------------------------------------------------------------------------
+        //
+        //  Constructor
+        //
+        
//--------------------------------------------------------------------------
+        /**
+         *  @private
+         */
+        public function URLUtil()
+        {
+            super();
+        }
+        
+        
//--------------------------------------------------------------------------
+        //
+        //  Class methods
+        //
+        
//--------------------------------------------------------------------------
+        
+        /**
+         *  Returns the domain and port information from the specified URL.
+         *  
+         *  @param url The URL to analyze.
+         *  @return The server name and port of the specified URL.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 9
+         *  @playerversion AIR 1.1
+         *  @productversion Flex 3
+         */
+        public static function getServerNameWithPort(url:String):String
+        {
+            // Find first slash; second is +1, start 1 after.
+            var start:int = url.indexOf("/") + 2;
+            var length:int = url.indexOf("/", start);
+            return length == -1 ? url.substring(start) : url.substring(start, 
length);
+        }
+        
+        /**
+         *  Returns the server name from the specified URL.
+         *  
+         *  @param url The URL to analyze.
+         *  @return The server name of the specified URL.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 9
+         *  @playerversion AIR 1.1
+         *  @productversion Flex 3
+         */
+        /* public static function getServerName(url:String):String
+        {
+            var sp:String = getServerNameWithPort(url);
+            
+            // If IPv6 is in use, start looking after the square bracket.
+            var delim:int = URLUtil.indexOfLeftSquareBracket(sp);
+            delim = (delim > -1)? sp.indexOf(":", delim) : sp.indexOf(":");   
+            
+            if (delim > 0)
+                sp = sp.substring(0, delim);
+            return sp;
+        } */
+        
+        /**
+         *  Returns the port number from the specified URL.
+         *  
+         *  @param url The URL to analyze.
+         *  @return The port number of the specified URL.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 9
+         *  @playerversion AIR 1.1
+         *  @productversion Flex 3
+         */
+        /* public static function getPort(url:String):uint
+        {
+            var sp:String = getServerNameWithPort(url);
+            // If IPv6 is in use, start looking after the square bracket.
+            var delim:int = URLUtil.indexOfLeftSquareBracket(sp);
+            delim = (delim > -1)? sp.indexOf(":", delim) : sp.indexOf(":");    
      
+            var port:uint = 0;
+            if (delim > 0)
+            {
+                var p:Number = Number(sp.substring(delim + 1));
+                if (!isNaN(p))
+                    port = int(p);
+            }
+            
+            return port;
+        } */
+        
+        /**
+         *  Converts a potentially relative URL to a fully-qualified URL.
+         *  If the URL is not relative, it is returned as is.
+         *  If the URL starts with a slash, the host and port
+         *  from the root URL are prepended.
+         *  Otherwise, the host, port, and path are prepended.
+         *
+         *  @param rootURL URL used to resolve the URL specified by the 
<code>url</code> parameter, if <code>url</code> is relative.
+         *  @param url URL to convert.
+         *
+         *  @return Fully-qualified URL.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 9
+         *  @playerversion AIR 1.1
+         *  @productversion Flex 3
+         */
+        /* public static function getFullURL(rootURL:String, url:String):String
+        {
+            if (url != null && !URLUtil.isHttpURL(url))
+            {
+                if (url.indexOf("./") == 0)
+                {
+                    url = url.substring(2);
+                }
+                if (URLUtil.isHttpURL(rootURL))
+                {
+                    var slashPos:Number;
+                    
+                    if (url.charAt(0) == '/')
+                    {
+                        // non-relative path, "/dev/foo.bar".
+                        slashPos = rootURL.indexOf("/", 8);
+                        if (slashPos == -1)
+                            slashPos = rootURL.length;
+                    }
+                    else
+                    {
+                        // relative path, "dev/foo.bar".
+                        slashPos = rootURL.lastIndexOf("/") + 1;
+                        if (slashPos <= 8)
+                        {
+                            rootURL += "/";
+                            slashPos = rootURL.length;
+                        }
+                    }
+                    
+                    if (slashPos > 0)
+                        url = rootURL.substring(0, slashPos) + url;
+                }
+            }
+            
+            return url;
+        } */
+        
+        // Note: The following code was copied from Flash Remoting's
+        // NetServices client components.
+        // It is reproduced here to keep the services APIs
+        // independent of the deprecated NetServices code.
+        // Note that it capitalizes any use of URL in method or class names.
+        
+        /**
+         *  Determines if the URL uses the HTTP, HTTPS, or RTMP protocol. 
+         *
+         *  @param url The URL to analyze.
+         * 
+         *  @return <code>true</code> if the URL starts with "http://";, 
"https://";, or "rtmp://".
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 9
+         *  @playerversion AIR 1.1
+         *  @productversion Flex 3
+         */
+        /* public static function isHttpURL(url:String):Boolean
+        {
+            return url != null &&
+                (url.indexOf("http://";) == 0 ||
+                    url.indexOf("https://";) == 0);
+        } */
+        
+        /**
+         *  Determines if the URL uses the secure HTTPS protocol. 
+         *
+         *  @param url The URL to analyze.
+         * 
+         *  @return <code>true</code> if the URL starts with "https://";.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 9
+         *  @playerversion AIR 1.1
+         *  @productversion Flex 3
+         */
+        /* public static function isHttpsURL(url:String):Boolean
+        {
+            return url != null && url.indexOf("https://";) == 0;
+        } */
+        
+        /**
+         *  Returns the protocol section of the specified URL.
+         *  The following examples show what is returned based on different 
URLs:
+         *  
+         *  <pre>
+         *  getProtocol("https://localhost:2700/";) returns "https"
+         *  
getProtocol("rtmp://www.myCompany.com/myMainDirectory/groupChatApp/HelpDesk") 
returns "rtmp"
+         *  getProtocol("rtmpt:/sharedWhiteboardApp/June2002") returns "rtmpt"
+         *  getProtocol("rtmp::1234/chatApp/room_name") returns "rtmp"
+         *  </pre>
+         *
+         *  @param url String containing the URL to parse.
+         *
+         *  @return The protocol or an empty String if no protocol is 
specified.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 9
+         *  @playerversion AIR 1.1
+         *  @productversion Flex 3
+         */
+        public static function getProtocol(url:String):String
+        {
+            var slash:int = url.indexOf("/");
+            var indx:int = url.indexOf(":/");
+            if (indx > -1 && indx < slash)
+            {
+                return url.substring(0, indx);
+            }
+            else
+            {
+                indx = url.indexOf("::");
+                if (indx > -1 && indx < slash)
+                    return url.substring(0, indx);
+            }
+            
+            return "";
+        }
+        
+        /**
+         *  Replaces the protocol of the
+         *  specified URI with the given protocol.
+         *
+         *  @param uri String containing the URI in which the protocol
+         *  needs to be replaced.
+         *
+         *  @param newProtocol String containing the new protocol to use.
+         *
+         *  @return The URI with the protocol replaced,
+         *  or an empty String if the URI does not contain a protocol.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 9
+         *  @playerversion AIR 1.1
+         *  @productversion Flex 3
+         */
+        /* public static function replaceProtocol(uri:String,
+                                               newProtocol:String):String
+        {
+            return uri.replace(getProtocol(uri), newProtocol);
+        } */
+        
+        /**
+         *  Returns a new String with the port replaced with the specified 
port.
+         *  If there is no port in the specified URI, the port is inserted.
+         *  This method expects that a protocol has been specified within the 
URI.
+         *
+         *  @param uri String containing the URI in which the port is replaced.
+         *  @param newPort uint containing the new port to subsitute.
+         *
+         *  @return The URI with the new port.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 9
+         *  @playerversion AIR 1.1
+         *  @productversion Flex 3
+         */
+        /* public static function replacePort(uri:String, newPort:uint):String
+        {
+            var result:String = "";
+            
+            // First, determine if IPv6 is in use by looking for square bracket
+            var indx:int = uri.indexOf("]");
+            
+            // If IPv6 is not in use, reset indx to the first colon
+            if (indx == -1)
+                indx = uri.indexOf(":");
+            
+            var portStart:int = uri.indexOf(":", indx+1);
+            var portEnd:int;
+            
+            // If we have a port
+            if (portStart > -1)
+            {
+                portStart++; // move past the ":"
+                portEnd = uri.indexOf("/", portStart);
+                //@TODO: need to throw an invalid uri here if no slash was 
found
+                result = uri.substring(0, portStart) +
+                    newPort.toString() +
+                    uri.substring(portEnd, uri.length);
+            }
+            else
+            {
+                // Insert the specified port
+                portEnd = uri.indexOf("/", indx);
+                if (portEnd > -1)
+                {
+                    // Look to see if we have protocol://host:port/
+                    // if not then we must have protocol:/relative-path
+                    if (uri.charAt(portEnd+1) == "/")
+                        portEnd = uri.indexOf("/", portEnd + 2);
+                    
+                    if (portEnd > 0)
+                    {
+                        result = uri.substring(0, portEnd) +
+                            ":"+ newPort.toString() +
+                            uri.substring(portEnd, uri.length);
+                    }
+                    else
+                    {
+                        result = uri + ":" + newPort.toString();
+                    }
+                }
+                else
+                {
+                    result = uri + ":"+ newPort.toString();
+                }
+            }
+            
+            return result;
+        } */
+        
+        /**
+         *  Returns a new String with the port and server tokens replaced with
+         *  the port and server from the currently running application.
+         *
+         *  @param url String containing the <code>SERVER_NAME_TOKEN</code> 
and/or <code>SERVER_NAME_PORT</code>
+         *  which should be replaced by the port and server from the 
application.
+         *
+         *  @return The URI with the port and server replaced.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 9
+         *  @playerversion AIR 1.1
+         *  @productversion Flex 3
+         */
+        /* public static function replaceTokens(url:String):String
+        {             
+            var loaderURL:String = LoaderConfig.url == null ? "" : 
LoaderConfig.url;
+            
+            // if the LoaderConfig.url hasn't been configured yet we need to 
+            // throw, informing the user that this value must be setup first
+            // TODO: add this back in after each new player build
+            //if (LoaderConfig.url == null)
+            //    trace("WARNING: LoaderConfig.url hasn't been initialized.");
+            
+            // Replace {server.name}
+            if (url.indexOf(SERVER_NAME_TOKEN) > 0)
+            {
+                loaderURL = URLUtil.replaceEncodedSquareBrackets(loaderURL);
+                var loaderProtocol:String = URLUtil.getProtocol(loaderURL);
+                var loaderServerName:String = "localhost";
+                if (loaderProtocol.toLowerCase() != "file")
+                    loaderServerName = URLUtil.getServerName(loaderURL);
+                
+                url = url.replace(SERVER_NAME_REGEX, loaderServerName);
+            }
+            
+            // Replace {server.port} either with the loader's port, or
+            // remove it and the proceeding token if a port is not
+            // specified for the SWF Loader.
+            var portToken:int = url.indexOf(SERVER_PORT_TOKEN);
+            if (portToken > 0)
+            {
+                var loaderPort:uint = URLUtil.getPort(loaderURL);
+                if (loaderPort > 0)
+                {
+                    url = url.replace(SERVER_PORT_REGEX, loaderPort);
+                }
+                else
+                {
+                    if (url.charAt(portToken - 1) == ":")
+                        url = url.substring(0, portToken - 1) + 
url.substring(portToken);
+                    
+                    url = url.replace(SERVER_PORT_REGEX, "");
+                }
+            }
+            
+            return url;
+        } */
+        
+        /**
+         * Tests whether two URI Strings are equivalent, ignoring case and
+         * differences in trailing slashes.
+         * 
+         *  @param uri1 The first URI to compare.
+         *  @param uri2 The second URI to compare.
+         *  
+         *  @return <code>true</code> if the URIs are equal. Otherwise, 
<code>false</code>.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 9
+         *  @playerversion AIR 1.1
+         *  @productversion Flex 3
+         */
+        /* public static function urisEqual(uri1:String, uri2:String):Boolean
+        {
+            if (uri1 != null && uri2 != null)
+            {
+                uri1 = StringUtil.trim(uri1).toLowerCase();
+                uri2 = StringUtil.trim(uri2).toLowerCase();
+                
+                if (uri1.charAt(uri1.length - 1) != "/")
+                    uri1 = uri1 + "/";
+                
+                if (uri2.charAt(uri2.length - 1) != "/")
+                    uri2 = uri2 + "/";
+            }
+            
+            return uri1 == uri2;
+        } */
+        
+        /**
+         *  Given a url, determines whether the url contains the server.name 
and
+         *  server.port tokens.
+         *
+         *  @param url A url string. 
+         * 
+         *  @return <code>true</code> if the url contains server.name and 
server.port tokens.
+         *
+         *  @langversion 3.0
+         *  @playerversion Flash 10
+         *  @playerversion AIR 1.5
+         *  @productversion Flex 4
+         */ 
+        /* public static function hasTokens(url:String):Boolean
+        {
+            if (url == null || url == "")
+                return false;
+            if (url.indexOf(SERVER_NAME_TOKEN) > 0)
+                return true;
+            if (url.indexOf(SERVER_PORT_TOKEN) > 0)
+                return true;
+            return false;
+        } */
+        
+        /**
+         * If the <code>LoaderConfig.url</code> property is not available, the 
<code>replaceTokens()</code> method will not 
+         * replace the server name and port properties properly.
+         * 
+         * @return <code>true</code> if the <code>LoaderConfig.url</code> 
property is not available. Otherwise, <code>false</code>.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 9
+         *  @playerversion AIR 1.1
+         *  @productversion Flex 3
+         */  
+        /* public static function hasUnresolvableTokens():Boolean
+        {
+            return LoaderConfig.url != null;
+        } */
+        
+        /**
+         *  The pattern in the String that is passed to the 
<code>replaceTokens()</code> method that 
+         *  is replaced by the application's server name.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 9
+         *  @playerversion AIR 1.1
+         *  @productversion Flex 3
+         */
+        //public static const SERVER_NAME_TOKEN:String = "{server.name}";
+        
+        /**
+         *  The pattern in the String that is passed to the 
<code>replaceTokens()</code> method that 
+         *  is replaced by the application's port.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 9
+         *  @playerversion AIR 1.1
+         *  @productversion Flex 3
+         */
+        //public static const SERVER_PORT_TOKEN:String = "{server.port}";
+        
+        /**
+         *  Enumerates an object's dynamic properties (by using a 
<code>for..in</code> loop)
+         *  and returns a String. You typically use this method to convert an 
ActionScript object to a String that you then append to the end of a URL.
+         *  By default, invalid URL characters are URL-encoded (converted to 
the <code>%XX</code> format).
+         *
+         *  <p>For example:
+         *  <pre>
+         *  var o:Object = { name: "Alex", age: 21 };
+         *  var s:String = URLUtil.objectToString(o,";",true);
+         *  trace(s);
+         *  </pre>
+         *  Prints "name=Alex;age=21" to the trace log.
+         *  </p>
+         *  
+         *  @param object The object to convert to a String.
+         *  @param separator The character that separates each of the object's 
<code>property:value</code> pair in the String.
+         *  @param encodeURL Whether or not to URL-encode the String.
+         *  
+         *  @return The object that was passed to the method.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 9
+         *  @playerversion AIR 1.1
+         *  @productversion Flex 3
+         */
+        /* public static function objectToString(object:Object, 
separator:String=';',
+                                              encodeURL:Boolean = true):String
+        {
+            var s:String = internalObjectToString(object, separator, null, 
encodeURL);
+            return s;
+        } 
+        
+        private static function indexOfLeftSquareBracket(value:String):int
+        {
+            var delim:int = value.indexOf(SQUARE_BRACKET_LEFT);
+            if (delim == -1)
+                delim = value.indexOf(SQUARE_BRACKET_LEFT_ENCODED);
+            return delim;
+        }
+        
+        private static function internalObjectToString(object:Object, 
separator:String, prefix:String, encodeURL:Boolean):String
+        {
+            var s:String = "";
+            var first:Boolean = true;
+            
+            for (var p:String in object)
+            {
+                if (first)
+                {
+                    first = false;
+                }
+                else
+                    s += separator;
+                
+                var value:Object = object[p];
+                var name:String = prefix ? prefix + "." + p : p;
+                if (encodeURL)
+                    name = encodeURIComponent(name);
+                
+                if (value is String)
+                {
+                    s += name + '=' + (encodeURL ? encodeURIComponent(value as 
String) : value);
+                }
+                else if (value is Number)
+                {
+                    value = value.toString();
+                    if (encodeURL)
+                        value = encodeURIComponent(value as String);
+                    
+                    s += name + '=' + value;
+                }
+                else if (value is Boolean)
+                {
+                    s += name + '=' + (value ? "true" : "false");
+                }
+                else
+                {
+                    if (value is Array)
+                    {
+                        s += internalArrayToString(value as Array, separator, 
name, encodeURL);
+                    }
+                    else // object
+                    {
+                        s += internalObjectToString(value, separator, name, 
encodeURL);
+                    }
+                }
+            }
+            return s;
+        }
+        
+        private static function 
replaceEncodedSquareBrackets(value:String):String
+        {
+            var rightIndex:int = value.indexOf(SQUARE_BRACKET_RIGHT_ENCODED);
+            if (rightIndex > -1)
+            {
+                value = value.replace(SQUARE_BRACKET_RIGHT_ENCODED, 
SQUARE_BRACKET_RIGHT);
+                var leftIndex:int = value.indexOf(SQUARE_BRACKET_LEFT_ENCODED);
+                if (leftIndex > -1)
+                    value = value.replace(SQUARE_BRACKET_LEFT_ENCODED, 
SQUARE_BRACKET_LEFT);
+            }
+            return value;
+        }
+        
+        private static function internalArrayToString(array:Array, 
separator:String, prefix:String, encodeURL:Boolean):String
+        {
+            var s:String = "";
+            var first:Boolean = true;
+            
+            var n:int = array.length;
+            for (var i:int = 0; i < n; i++)
+            {
+                if (first)
+                {
+                    first = false;
+                }
+                else
+                    s += separator;
+                
+                var value:Object = array[i];
+                var name:String = prefix + "." + i;
+                if (encodeURL)
+                    name = encodeURIComponent(name);
+                
+                if (value is String)
+                {
+                    s += name + '=' + (encodeURL ? encodeURIComponent(value as 
String) : value);
+                }
+                else if (value is Number)
+                {
+                    value = value.toString();
+                    if (encodeURL)
+                        value = encodeURIComponent(value as String);
+                    
+                    s += name + '=' + value;
+                }
+                else if (value is Boolean)
+                {
+                    s += name + '=' + (value ? "true" : "false");
+                }
+                else
+                {
+                    if (value is Array)
+                    {
+                        s += internalArrayToString(value as Array, separator, 
name, encodeURL);
+                    }
+                    else // object
+                    {
+                        s += internalObjectToString(value, separator, name, 
encodeURL);
+                    }
+                }
+            }
+            return s;
+        }*/
+        
+        /**
+         *  Returns an object from a String. The String contains 
<code>name=value</code> pairs, which become dynamic properties
+         *  of the returned object. These property pairs are separated by the 
specified <code>separator</code>.
+         *  This method converts Numbers and Booleans, Arrays (defined by 
"[]"), 
+         *  and sub-objects (defined by "{}"). By default, URL patterns of the 
format <code>%XX</code> are converted
+         *  to the appropriate String character.
+         *
+         *  <p>For example:
+         *  <pre>
+         *  var s:String = "name=Alex;age=21";
+         *  var o:Object = URLUtil.stringToObject(s, ";", true);
+         *  </pre>
+         *  
+         *  Returns the object: <code>{ name: "Alex", age: 21 }</code>.
+         *  </p>
+         *  
+         *  @param string The String to convert to an object.
+         *  @param separator The character that separates 
<code>name=value</code> pairs in the String.
+         *  @param decodeURL Whether or not to decode URL-encoded characters 
in the String.
+         * 
+         *  @return The object containing properties and values extracted from 
the String passed to this method.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 9
+         *  @playerversion AIR 1.1
+         *  @productversion Flex 3
+         */
+        /* public static function stringToObject(string:String, 
separator:String = ";",
+                                              decodeURL:Boolean = true):Object
+        {
+            var o:Object = {};
+            
+            var arr:Array = string.split(separator);
+            
+            // if someone has a name or value that contains the separator 
+            // this will not work correctly, nor will it work well if there 
are 
+            // '=' or '.' in the name or value
+            
+            var n:int = arr.length;
+            for (var i:int = 0; i < n; i++)
+            {
+                var pieces:Array = arr[i].split('=');
+                var name:String = pieces[0];
+                if (decodeURL)
+                    name = decodeURIComponent(name);
+                
+                var value:Object = pieces[1];
+                if (decodeURL)
+                    value = decodeURIComponent(value as String);
+                
+                if (value == "true")
+                    value = true;
+                else if (value == "false")
+                    value = false;
+                else 
+                {
+                    var temp:Object = int(value);
+                    if (temp.toString() == value)
+                        value = temp;
+                    else
+                    {
+                        temp = Number(value)
+                        if (temp.toString() == value)
+                            value = temp;
+                    }
+                }
+                
+                var obj:Object = o;
+                
+                pieces = name.split('.');
+                var m:int = pieces.length;
+                for (var j:int = 0; j < m - 1; j++)
+                {
+                    var prop:String = pieces[j];
+                    if (obj[prop] == null && j < m - 1)
+                    {
+                        var subProp:String = pieces[j + 1];
+                        var idx:Object = int(subProp);
+                        if (idx.toString() == subProp)
+                            obj[prop] = [];
+                        else
+                            obj[prop] = {};
+                    }
+                    obj = obj[prop];
+                }
+                obj[pieces[j]] = value;
+            }
+            
+            return o;
+        } */
+        
+        // Reusable reg-exp for token replacement. The . means any char, so 
this means
+        // we should handle server.name and server-name, etc...
+       /*  private static const SERVER_NAME_REGEX:RegExp = new 
RegExp("\\{server.name\\}", "g");
+        private static const SERVER_PORT_REGEX:RegExp = new 
RegExp("\\{server.port\\}", "g");  */   
+    }
+    
+}
\ No newline at end of file

-- 
To stop receiving notification emails like this one, please contact
[email protected].

Reply via email to