Enjoy!
- Code: Select all
package generics
{
import flash.utils.getDefinitionByName;
import flash.utils.getQualifiedClassName;
import playerio.DatabaseObject;
public class UtilFunctions
{
public static function copyObject(source:Object, destination:Object):void
{
if((source) && (destination))
{
for (var prop:String in source)
{
handleData(source, destination, prop);
}
}
}
public static function copyArray(source:Object, destination:Object, prop:String):void
{
var array:Array = new Array();
for (var i:String in source[prop])
{
var copy:Object = new Object();
handleData(source[prop], copy, i);
array.push(copy[i]);
}
destination[prop] = array;
}
private static function handleData(source:Object, destination:Object, prop:String):void
{
var classDefinition:Object = getDefinitionByName(getQualifiedClassName(source[prop]));
if (classDefinition == (Object as Class).toString())
{
destination[prop] = new Object();
copyObject(source[prop], destination[prop]);
}
else if (classDefinition == (Array as Class).toString())
{
copyArray(source, destination, prop);
}
else
{
destination[prop] = source[prop];
//trace(prop, destination[prop]);
}
}
}
}
Edit: Had some errors in the code :]
Edit2: Did a new update, now uses getDefinitionByName(getQualifiedClassName(source[prop]));
Edit3: Did some name refactoring.