home *** CD-ROM | disk | FTP | other *** search
/ FCE Gold Plus / GOLD.iso / pc / fscommand / linux / main.swf / scripts / __Packages / com / dagc / DirectorSerializer.as < prev   
Encoding:
Text File  |  2007-09-06  |  6.8 KB  |  237 lines

  1. class com.dagc.DirectorSerializer
  2. {
  3.    function DirectorSerializer()
  4.    {
  5.    }
  6.    function deserialize(strVal)
  7.    {
  8.       var _loc1_ = strVal;
  9.       if(_loc1_ == undefined || _loc1_ == "")
  10.       {
  11.          return undefined;
  12.       }
  13.       return this.deserializeXMLSerializedItem(unescape(_loc1_));
  14.    }
  15.    function deserializeXML(objXML)
  16.    {
  17.       var _loc1_ = this.parseNode(objXML.firstChild.firstChild,new Object());
  18.       return _loc1_;
  19.    }
  20.    function deserializeXMLSerializedItem(strData)
  21.    {
  22.       var _loc1_ = new XML();
  23.       _loc1_.ignoreWhite = true;
  24.       _loc1_.parseXML(strData);
  25.       var _loc2_ = this.parseNode(_loc1_.firstChild.firstChild,new Object());
  26.       return _loc2_;
  27.    }
  28.    function parseNode(objXMLNode, obj)
  29.    {
  30.       var strNodeName = objXMLNode.nodeName;
  31.       var strNodeValue = objXMLNode.firstChild.nodeValue;
  32.       var strVarName = objXMLNode.attributes.name;
  33.       var arrChildren = objXMLNode.childNodes;
  34.       var iLen = arrChildren.length;
  35.       switch(strNodeName)
  36.       {
  37.          case "obj":
  38.             var objNew = new Object();
  39.             var _loc1_ = 0;
  40.             while(_loc1_ < iLen)
  41.             {
  42.                var _loc3_ = arrChildren[_loc1_];
  43.                if(_loc3_.nodeType == 1)
  44.                {
  45.                   var objVal = this.parseNode(_loc3_,objNew);
  46.                }
  47.                _loc1_ = _loc1_ + 1;
  48.             }
  49.             if(strVarName != undefined)
  50.             {
  51.                obj[strVarName] = objNew;
  52.             }
  53.             else
  54.             {
  55.                obj = objNew;
  56.             }
  57.             break;
  58.          case "str":
  59.             if(strVarName == undefined)
  60.             {
  61.                obj = this.unescapeXml(String(strNodeValue));
  62.             }
  63.             else
  64.             {
  65.                obj[strVarName] = this.unescapeXml(String(strNodeValue));
  66.             }
  67.             break;
  68.          case "num":
  69.             if(strVarName == undefined)
  70.             {
  71.                obj = Number(strNodeValue);
  72.             }
  73.             else
  74.             {
  75.                obj[strVarName] = Number(strNodeValue);
  76.             }
  77.             break;
  78.          case "bool":
  79.             var bln = true;
  80.             if(strNodeValue == "false")
  81.             {
  82.                bln = false;
  83.             }
  84.             if(strVarName == null)
  85.             {
  86.                obj = bln;
  87.             }
  88.             else
  89.             {
  90.                obj[strVarName] = bln;
  91.             }
  92.             break;
  93.          case "null":
  94.             if(strVarName == undefined)
  95.             {
  96.                obj = null;
  97.             }
  98.             else
  99.             {
  100.                obj[strVarName] = null;
  101.             }
  102.             break;
  103.          case "undf":
  104.             if(strVarName == undefined)
  105.             {
  106.                obj = undefined;
  107.             }
  108.             else
  109.             {
  110.                obj[strVarName] = undefined;
  111.             }
  112.             break;
  113.          case "date":
  114.             if(strVarName == undefined)
  115.             {
  116.                obj = new Date(Number(strNodeValue));
  117.             }
  118.             else
  119.             {
  120.                obj[strVarName] = new Date(Number(strNodeValue));
  121.             }
  122.             break;
  123.          case "array":
  124.             var arr = new Array();
  125.             var _loc2_ = 0;
  126.             while(_loc2_ < iLen)
  127.             {
  128.                _loc3_ = arrChildren[_loc2_];
  129.                if(_loc3_.nodeType == 1)
  130.                {
  131.                   var objRef = new Object();
  132.                   var objVal = this.parseNode(_loc3_,objRef);
  133.                   arr.push(objVal);
  134.                }
  135.                _loc2_ = _loc2_ + 1;
  136.             }
  137.             if(strVarName == undefined)
  138.             {
  139.                return arr;
  140.             }
  141.             obj[strVarName] = arr;
  142.             break;
  143.       }
  144.       return obj;
  145.    }
  146.    function serialize(obj)
  147.    {
  148.       var _loc1_ = new Object();
  149.       _loc1_.xml = "<fp>";
  150.       this.serializeNode(obj,_loc1_,null);
  151.       _loc1_.xml += "</fp>";
  152.       return escape(_loc1_.xml);
  153.    }
  154.    function serializeNode(obj, objDoc, strName)
  155.    {
  156.       var _loc1_ = obj;
  157.       var _loc3_ = objDoc;
  158.       switch(typeof _loc1_)
  159.       {
  160.          case "undefined":
  161.             _loc3_.xml += "<undf" + this.addName(strName) + "/>";
  162.             break;
  163.          case "string":
  164.             _loc3_.xml += "<str" + this.addName(strName) + ">" + this.escapeXml(_loc1_) + "</str>";
  165.             break;
  166.          case "number":
  167.             _loc3_.xml += "<num" + this.addName(strName) + ">" + _loc1_ + "</num>";
  168.             break;
  169.          case "boolean":
  170.             _loc3_.xml += "<bool" + this.addName(strName) + ">" + _loc1_ + "</bool>";
  171.             break;
  172.          case "object":
  173.             if(_loc1_ == null)
  174.             {
  175.                _loc3_.xml += "<null" + this.addName(strName) + "/>";
  176.             }
  177.             else if(_loc1_ instanceof Date)
  178.             {
  179.                _loc3_.xml += "<date" + this.addName(strName) + ">" + _loc1_.getTime() + "</date>";
  180.             }
  181.             else if(_loc1_ instanceof Array)
  182.             {
  183.                _loc3_.xml += "<array" + this.addName(strName) + ">";
  184.                var _loc2_ = 0;
  185.                while(_loc2_ < _loc1_.length)
  186.                {
  187.                   this.serializeNode(_loc1_[_loc2_],_loc3_,null);
  188.                   _loc2_ = _loc2_ + 1;
  189.                }
  190.                _loc3_.xml += "</array>";
  191.             }
  192.             else
  193.             {
  194.                _loc3_.xml += "<obj" + this.addName(strName) + ">";
  195.                for(var n in _loc1_)
  196.                {
  197.                   if(typeof _loc1_[n] != "function")
  198.                   {
  199.                      this.serializeNode(_loc1_[n],_loc3_,n);
  200.                   }
  201.                }
  202.                _loc3_.xml += "</obj>";
  203.             }
  204.       }
  205.    }
  206.    function addName(strName)
  207.    {
  208.       if(strName != null)
  209.       {
  210.          return " name=\"" + strName + "\"";
  211.       }
  212.       return "";
  213.    }
  214.    function escapeXml(strXML)
  215.    {
  216.       var _loc1_ = strXML;
  217.       _loc1_ = _loc1_.split("&").join("|~amp;|");
  218.       _loc1_ = _loc1_.split("<").join("|~lt;|");
  219.       _loc1_ = _loc1_.split(">").join("|~gt;|");
  220.       _loc1_ = _loc1_.split("&").join("&");
  221.       _loc1_ = _loc1_.split("<").join("<");
  222.       _loc1_ = _loc1_.split(">").join(">");
  223.       return _loc1_;
  224.    }
  225.    function unescapeXml(strXML)
  226.    {
  227.       var _loc1_ = strXML;
  228.       _loc1_ = _loc1_.split("&").join("&");
  229.       _loc1_ = _loc1_.split("<").join("<");
  230.       _loc1_ = _loc1_.split(">").join(">");
  231.       _loc1_ = _loc1_.split("|~amp;|").join("&");
  232.       _loc1_ = _loc1_.split("|~lt;|").join("<");
  233.       _loc1_ = _loc1_.split("|~gt;|").join(">");
  234.       return _loc1_;
  235.    }
  236. }
  237.