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 ¯\_(ツ)_/¯');
| |
− | };
| |
− | }
| |
− |
| |
− | }
| |