Changes

Jump to navigation Jump to search
m
no edit summary
Line 1: Line 1: −
// License: GPL
+
    // License: GPL
//  
+
    //  
function wbContainer( universe, location ) {
+
    function wbContainer( universe, location ) {
   −
    this.main = interjson( get_Y_from_X( universe, location ));
+
        this.main = interjson( checkdive( universe, location ));
    var container = this;
+
        var container = this;
   −
    this.checkentity = function ( rel_id_list, paths ) {
+
        this.checkentity = function ( rel_id_list, paths ) {
        var return_obj = [],
+
            var return_obj = [],
            temporary_obj = [],
+
                temporary_obj = [],
            baseRelation;
+
                baseRelation;
        if ( Object.keys(rel_id_list).length > 0 ) {
+
            if ( Object.keys(rel_id_list).length > 0 ) {
            Object.keys(rel_id_list).forEach( function( item ){
+
                Object.keys(rel_id_list).forEach( function( item ){
                temporary_obj = [];
+
                    temporary_obj = [];
                baseRelation = checkdive( container.main, rel_id_list[item][0] );
+
                    baseRelation = checkdive( container.main, rel_id_list[item][0] );
                rise( temporary_obj, depthdive( baseRelation, paths ));
+
                    rise( temporary_obj, depthdive( baseRelation, paths ));
                if ( Object.keys(temporary_obj).length > 0 ) {
+
                    if ( Object.keys(temporary_obj).length > 0 ) {
                    Object.keys(temporary_obj).forEach( function (hit) {
+
                        Object.keys(temporary_obj).forEach( function (hit) {
                        if ( temporary_obj[hit] == rel_id_list[item][1] ) {
+
                            if ( temporary_obj[hit] == rel_id_list[item][1] ) {
                            return_obj.push(rel_id_list[item]);
+
                                return_obj.push(rel_id_list[item]);
                        }
+
                            }
                    });
+
                        });
                } else if ( temporary_obj == rel_id_list[item][1] ) {
+
                    } else if ( temporary_obj == rel_id_list[item][1] ) {
                    return_obj.push(rel_id_list[item]);
+
                        return_obj.push(rel_id_list[item]);
                }
+
                    }
            });
+
                });
        }  
+
            }  
        return return_obj;
+
            return return_obj;
    }
+
        }
   −
    // the list of private helper functions, could not be accessed from outside
+
        // the list of private helper functions, could not be accessed from outside
    function indexinterpolate(obj,i) { return  (obj[i] != undefined) ? obj[i] : obj};  
+
        function indexinterpolate(obj,i) { return  (obj[i] != undefined) ? obj[i] : obj};  
    // helper function for checking a part of an array exists
+
        // helper function for checking a part of an array exists
    function indexcheck(obj,i) {  return  (obj[i] != undefined) ? obj[i] : undefined };
+
        function indexcheck(obj,i) {  return  (obj[i] != undefined) ? obj[i] : undefined };
    // dive selects matrix.a.b.c.d from the array called matrix and 'a.b.c.d' as string
+
        // dive selects matrix.a.b.c.d from the array called matrix and 'a.b.c.d' as string
    // if a.b.c.d does not exists, it returns the substructure until the substructure exists, if d does not exist, it returns matrix.a.b.c e.g.
+
        // if a.b.c.d does not exists, it returns the substructure until the substructure exists, if d does not exist, it returns matrix.a.b.c e.g.
   
+
       
    function dive(array, read){
+
        function dive(array, read){
        return read.split('.').reduce(indexinterpolate, array);
+
            return read.split('.').reduce(indexinterpolate, array);
    }
+
        }
   
+
       
    function check(array, read){
+
        function check(array, read){
        if ( array != undefined ) {
+
            if ( array != undefined ) {
            return read.split('.').reduce(indexcheck, array);
+
                return read.split('.').reduce(indexcheck, array);
 +
            }
 
         }
 
         }
    }
+
       
   
+
        function checkdive(array, read){
    function checkdive(array, read){
+
            if ( check(array, read) != undefined) {
        if ( check(array, read) != undefined) {
+
                return dive(array, read);
            return dive(array, read);
+
            } else if ( Object.keys(array).length > 0 ) {
        } else if ( Object.keys(array).length > 0 ) {
+
                return complexcheck( array, read );
            return complexcheck( array, read );
+
            }
 
         }
 
         }
    }
  −
  −
    function complexcheck(array, read){
  −
        var ret_obj;
  −
        Object.keys(array).forEach( function(item){
  −
            rise( ret_obj, checkdive(array[item], read)) ;
  −
        });
  −
        return ret_obj;
  −
    }
     −
    function depthdive(array, read){
+
        function complexcheck(array, read){
        var ret_obj,
+
            var ret_obj;
            temp_obj = array;
+
             Object.keys(array).forEach( function(item){
        if ( Object.keys(read).length > 0 ) {
+
                 rise( ret_obj, checkdive(array[item], read)) ;  
             Object.keys(read).forEach( function(path) {
  −
                 temp_obj = checkdive(temp_obj, path);
   
             });
 
             });
            rise(ret_obj, temp_obj);
   
             return ret_obj;
 
             return ret_obj;
        } else {
  −
            return checkdive(array, read);
   
         }
 
         }
    }
     −
    function rise(array, to_push) {
+
        function depthdive(array, read){
        if ( to_push != undefined) {
+
            var ret_obj,
             if ( Object.keys(to_push).length > 0 ){
+
                temp_obj = array;
                 Object.keys(to_push).forEach( function(item){
+
             if ( Object.keys(read).length > 0 ) {
                     if ( array != undefined ) {
+
                 Object.keys(read).forEach( function(path) {
                        array.push(to_push[item]);
+
                     temp_obj = checkdive(temp_obj, path);
                    }
   
                 });
 
                 });
 +
                rise(ret_obj, temp_obj);
 +
                return ret_obj;
 
             } else {
 
             } else {
                 array.push(to_push);
+
                 return checkdive(array, read);
 +
            }
 +
        }
 +
 
 +
        function rise(array, to_push) {
 +
            if ( to_push != undefined) {
 +
                if ( Object.keys(to_push).length > 0 ){
 +
                    Object.keys(to_push).forEach( function(item){
 +
                        if ( array != undefined ) {
 +
                            array.push(to_push[item]);
 +
                        }
 +
                    });
 +
                } else {
 +
                    array.push(to_push);
 +
                }
 
             }
 
             }
 
         }
 
         }
 +
 +
        function interjson( obj ) {
 +
            try {
 +
                return JSON.parse( obj )
 +
            } catch (e) {
 +
            // if not JSON, do silly things
 +
                console.log('not a json ¯\_(ツ)_/¯');
 +
            };
 +
        }
 +
       
 
     }
 
     }
  −
    function interjson( obj ) {
  −
        try {
  −
            return JSON.parse( obj )
  −
        } catch (e) {
  −
        // if not JSON, do silly things
  −
            console.log('not a json ¯\_(ツ)_/¯');
  −
        };
  −
    }
  −
   
  −
}
 
530

edits

Navigation menu