Difference between revisions of "User:Abel/WbProcessor.js"

From Wikibase Personal data
Jump to navigation Jump to search
m
m
Line 11: Line 11:
 
             baseRelation;
 
             baseRelation;
 
         if ( Object.keys(rel_id_list).length > 0 ) {
 
         if ( Object.keys(rel_id_list).length > 0 ) {
             Object.keys(rel_id_list).forEach(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] );
Line 24: Line 24:
 
                     return_obj.push(rel_id_list[item]);
 
                     return_obj.push(rel_id_list[item]);
 
                 }
 
                 }
             }
+
             });
 
         }  
 
         }  
 
         return return_obj;
 
         return return_obj;
Line 56: Line 56:
 
     function complexcheck(array, read){
 
     function complexcheck(array, read){
 
         var ret_obj;
 
         var ret_obj;
         Object.keys(array).forEach(item){
+
         Object.keys(array).forEach( function(item){
 
             rise( ret_obj, checkdive(array[item], read)) ;  
 
             rise( ret_obj, checkdive(array[item], read)) ;  
         }
+
         });
 
         return ret_obj;
 
         return ret_obj;
 
     }
 
     }
Line 66: Line 66:
 
             temp_obj = array;
 
             temp_obj = array;
 
         if ( Object.keys(read).length > 0 ) {
 
         if ( Object.keys(read).length > 0 ) {
             Object.keys(read).forEach(path) {
+
             Object.keys(read).forEach( function(path) {
 
                 temp_obj = checkdive(temp_obj, path);
 
                 temp_obj = checkdive(temp_obj, path);
             }
+
             });
 
             rise(ret_obj, temp_obj);
 
             rise(ret_obj, temp_obj);
 
             return ret_obj;
 
             return ret_obj;
Line 76: Line 76:
 
     }
 
     }
  
     function rise(array, to_push){
+
     function rise(array, to_push) {
 
         if ( to_push != undefined) {
 
         if ( to_push != undefined) {
 
             if ( Object.keys(to_push).length > 0 ){
 
             if ( Object.keys(to_push).length > 0 ){
                 Object.keys(to_push).forEach(item){
+
                 Object.keys(to_push).forEach( function(item){
 
                     if ( array != undefined ) {
 
                     if ( array != undefined ) {
 
                         array.push(to_push[item]);
 
                         array.push(to_push[item]);
 
                     }
 
                     }
                 }
+
                 });
 
             } else {
 
             } else {
 
                 array.push(to_push);
 
                 array.push(to_push);

Revision as of 10:42, 14 May 2019

// License: GPL
// 
function wbContainer( universe, location ) {

    this.main = interjson( get_Y_from_X( universe, location ));
    var container = this;

    this.checkentity = function ( rel_id_list, paths ) {
        var return_obj = [],
            temporary_obj = [],
            baseRelation;
        if ( Object.keys(rel_id_list).length > 0 ) {
            Object.keys(rel_id_list).forEach( function( item ){
                temporary_obj = [];
                baseRelation = checkdive( container.main, rel_id_list[item][0] );
                rise( temporary_obj, depthdive( baseRelation, paths ));
                if ( Object.keys(temporary_obj).length > 0 ) {
                    Object.keys(temporary_obj).forEach(hit){
                        if ( temporary_obj[hit] == rel_id_list[item][1] ) {
                            return_obj.push(rel_id_list[item]);
                        }
                    }
                } else if ( temporary_obj == rel_id_list[item][1] ) {
                    return_obj.push(rel_id_list[item]);
                }
            });
        } 
        return return_obj;
    }

    // the list of private helper functions, could not be accessed from outside
    function indexinterpolate(obj,i) { return  (obj[i] != undefined) ? obj[i] : obj}; 
    // helper function for checking a part of an array exists
    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
    // 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){
        return read.split('.').reduce(indexinterpolate, array);
    }
    
    function check(array, read){
        if ( array != undefined ) {
            return read.split('.').reduce(indexcheck, array);
        }
    }
    
    function checkdive(array, read){
        if ( check(array, read) != undefined) {
            return dive(array, read);
        } else if ( Object.keys(array).length > 0 ) {
            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){
        var ret_obj,
            temp_obj = array;
        if ( Object.keys(read).length > 0 ) {
            Object.keys(read).forEach( function(path) {
                temp_obj = checkdive(temp_obj, path);
            });
            rise(ret_obj, temp_obj);
            return ret_obj;
        } else {
            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 ¯\_(ツ)_/¯');
        };
    } 
    
}