home *** CD-ROM | disk | FTP | other *** search
/ 404 Jogos / CLJG.iso / Puzzle / Clusterz / Clusterz.swf / scripts / it / gotoandplay / smartfoxserver / util / ObjectSerializer.as < prev   
Encoding:
Text File  |  2008-09-12  |  5.1 KB  |  181 lines

  1. package it.gotoandplay.smartfoxserver.util
  2. {
  3.    public class ObjectSerializer
  4.    {
  5.       
  6.       private static var instance:ObjectSerializer;
  7.        
  8.       
  9.       private var eof:String;
  10.       
  11.       private var debug:Boolean;
  12.       
  13.       private var tabs:String;
  14.       
  15.       public function ObjectSerializer(param1:Boolean = false)
  16.       {
  17.          super();
  18.          this.tabs = "\t\t\t\t\t\t\t\t\t\t\t\t\t";
  19.          setDebug(param1);
  20.       }
  21.       
  22.       public static function getInstance(param1:Boolean = false) : ObjectSerializer
  23.       {
  24.          if(instance == null)
  25.          {
  26.             instance = new ObjectSerializer(param1);
  27.          }
  28.          return instance;
  29.       }
  30.       
  31.       public function serialize(param1:Object) : String
  32.       {
  33.          var _loc2_:Object = null;
  34.          _loc2_ = {};
  35.          obj2xml(param1,_loc2_);
  36.          return _loc2_.xmlStr;
  37.       }
  38.       
  39.       private function obj2xml(param1:Object, param2:Object, param3:int = 0, param4:String = "") : void
  40.       {
  41.          var _loc5_:String = null;
  42.          var _loc6_:String = null;
  43.          var _loc7_:* = null;
  44.          var _loc8_:* = undefined;
  45.          if(param3 == 0)
  46.          {
  47.             param2.xmlStr = "<dataObj>" + this.eof;
  48.          }
  49.          else
  50.          {
  51.             if(this.debug)
  52.             {
  53.                param2.xmlStr += this.tabs.substr(0,param3);
  54.             }
  55.             _loc6_ = param1 is Array ? "a" : "o";
  56.             param2.xmlStr += "<obj t=\'" + _loc6_ + "\' o=\'" + param4 + "\'>" + this.eof;
  57.          }
  58.          for(_loc5_ in param1)
  59.          {
  60.             _loc7_ = typeof param1[_loc5_];
  61.             _loc8_ = param1[_loc5_];
  62.             if(_loc7_ == "boolean" || _loc7_ == "number" || _loc7_ == "string" || _loc7_ == "null")
  63.             {
  64.                if(_loc7_ == "boolean")
  65.                {
  66.                   _loc8_ = Number(_loc8_);
  67.                }
  68.                else if(_loc7_ == "null")
  69.                {
  70.                   _loc7_ = "x";
  71.                   _loc8_ = "";
  72.                }
  73.                else if(_loc7_ == "string")
  74.                {
  75.                   _loc8_ = Entities.encodeEntities(_loc8_);
  76.                }
  77.                if(this.debug)
  78.                {
  79.                   param2.xmlStr += this.tabs.substr(0,param3 + 1);
  80.                }
  81.                param2.xmlStr += "<var n=\'" + _loc5_ + "\' t=\'" + _loc7_.substr(0,1) + "\'>" + _loc8_ + "</var>" + this.eof;
  82.             }
  83.             else if(_loc7_ == "object")
  84.             {
  85.                obj2xml(_loc8_,param2,param3 + 1,_loc5_);
  86.                if(this.debug)
  87.                {
  88.                   param2.xmlStr += this.tabs.substr(0,param3 + 1);
  89.                }
  90.                param2.xmlStr += "</obj>" + this.eof;
  91.             }
  92.          }
  93.          if(param3 == 0)
  94.          {
  95.             param2.xmlStr += "</dataObj>" + this.eof;
  96.          }
  97.       }
  98.       
  99.       private function setDebug(param1:Boolean) : void
  100.       {
  101.          this.debug = param1;
  102.          if(this.debug)
  103.          {
  104.             this.eof = "\n";
  105.          }
  106.          else
  107.          {
  108.             this.eof = "";
  109.          }
  110.       }
  111.       
  112.       private function xml2obj(param1:XML, param2:Object) : void
  113.       {
  114.          var _loc3_:int = 0;
  115.          var _loc4_:XMLList = null;
  116.          var _loc5_:String = null;
  117.          var _loc6_:XML = null;
  118.          var _loc7_:String = null;
  119.          var _loc8_:String = null;
  120.          var _loc9_:String = null;
  121.          var _loc10_:String = null;
  122.          var _loc11_:String = null;
  123.          _loc3_ = 0;
  124.          _loc4_ = param1.children();
  125.          for each(_loc6_ in _loc4_)
  126.          {
  127.             if((_loc5_ = String(_loc6_.name().toString())) == "obj")
  128.             {
  129.                _loc7_ = _loc6_.@o;
  130.                if((_loc8_ = _loc6_.@t) == "a")
  131.                {
  132.                   param2[_loc7_] = [];
  133.                }
  134.                else if(_loc8_ == "o")
  135.                {
  136.                   param2[_loc7_] = {};
  137.                }
  138.                xml2obj(_loc6_,param2[_loc7_]);
  139.             }
  140.             else if(_loc5_ == "var")
  141.             {
  142.                _loc9_ = _loc6_.@n;
  143.                _loc10_ = _loc6_.@t;
  144.                _loc11_ = _loc6_.toString();
  145.                if(_loc10_ == "b")
  146.                {
  147.                   param2[_loc9_] = _loc11_ == "0" ? false : true;
  148.                }
  149.                else if(_loc10_ == "n")
  150.                {
  151.                   param2[_loc9_] = Number(_loc11_);
  152.                }
  153.                else if(_loc10_ == "s")
  154.                {
  155.                   param2[_loc9_] = _loc11_;
  156.                }
  157.                else if(_loc10_ == "x")
  158.                {
  159.                   param2[_loc9_] = null;
  160.                }
  161.             }
  162.          }
  163.       }
  164.       
  165.       private function encodeEntities(param1:String) : String
  166.       {
  167.          return param1;
  168.       }
  169.       
  170.       public function deserialize(param1:String) : Object
  171.       {
  172.          var _loc2_:XML = null;
  173.          var _loc3_:Object = null;
  174.          _loc2_ = new XML(param1);
  175.          _loc3_ = {};
  176.          xml2obj(_loc2_,_loc3_);
  177.          return _loc3_;
  178.       }
  179.    }
  180. }
  181.