Skip to content

Instantly share code, notes, and snippets.

@chippinkston
Last active May 23, 2017 19:41
Show Gist options
  • Select an option

  • Save chippinkston/deeb35526ab0a1aab155961115158329 to your computer and use it in GitHub Desktop.

Select an option

Save chippinkston/deeb35526ab0a1aab155961115158329 to your computer and use it in GitHub Desktop.

Revisions

  1. chippinkston revised this gist May 23, 2017. 1 changed file with 8 additions and 6 deletions.
    14 changes: 8 additions & 6 deletions deORM
    Original file line number Diff line number Diff line change
    @@ -1,11 +1,14 @@
    /*** Source: http://fusiongrokker.com/post/deorm ***/
    public function deORM(obj = this) {
    /*** Source: http://fusiongrokker.com/post/deorm ***/
    public function deORM( obj = this, depth = 1, depthLimit = 10 ){
    var deWormed = {};
    if (depth >= depthLimit){
    return {};
    }
    if (isSimpleValue( obj )){
    deWormed = obj;
    }
    else if (isObject( obj )){
    var md = getMetadata( obj );
    var md = getMetadata( obj );
    do {
    if (md.keyExists('properties')){
    for (var prop in md.properties){
    @@ -23,18 +26,17 @@
    }
    else if (isStruct( obj )){
    for (var key in obj){
    deWormed[ key ] = deORM( obj[key] );
    deWormed[ key ] = deORM( obj[key], depth+1, depthLimit );
    }
    }
    else if (isArray( obj )){
    var deWormed = [];
    for (var el in obj){
    deWormed.append( deORM( el ) );
    deWormed.append( deORM( el, depth+1, depthLimit ) );
    }
    }
    else{
    deWormed = getMetadata( obj );
    }

    return deWormed;
    }
  2. chippinkston created this gist Apr 25, 2017.
    40 changes: 40 additions & 0 deletions deORM
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,40 @@
    /*** Source: http://fusiongrokker.com/post/deorm ***/
    public function deORM(obj = this) {
    var deWormed = {};
    if (isSimpleValue( obj )){
    deWormed = obj;
    }
    else if (isObject( obj )){
    var md = getMetadata( obj );
    do {
    if (md.keyExists('properties')){
    for (var prop in md.properties){
    if (structKeyExists(obj, 'get' & prop.name)){
    if ( !prop.keyExists('fieldtype') || prop.fieldtype == "id" ){
    deWormed[ prop.name ] = invoke(obj, "get#prop.name#");
    }
    }
    }
    }
    if (md.keyExists('extends')){
    md = md.extends;
    }
    } while(md.keyExists('extends'));
    }
    else if (isStruct( obj )){
    for (var key in obj){
    deWormed[ key ] = deORM( obj[key] );
    }
    }
    else if (isArray( obj )){
    var deWormed = [];
    for (var el in obj){
    deWormed.append( deORM( el ) );
    }
    }
    else{
    deWormed = getMetadata( obj );
    }

    return deWormed;
    }