lib/modelToText/transformQuery.js

Summary

Maintainability
A
0 mins
Test Coverage
//////////////////////////////////////////
// Requirements                         //
//////////////////////////////////////////

var moboUtil   = require('./../util/moboUtil');
var semlog     = require('semlog');
var log        = semlog.log;


//////////////////////////////////////////
// CORE FUNCTIONS                       //
//////////////////////////////////////////

/**
 * Executes the parsing of queries
 * Will generate SMW templates
 *
 * @param   {object}    settings
 * @param   {object}    obj
 * @param   {string}    name        key-name of the current obj
 *
 * @returns {object}    generated wikipages
 */
exports.exec = function(settings, obj, name) {
    'use strict';


    //////////////////////////////////////////
    // Inner Variables                      //
    //////////////////////////////////////////

    /** Return Object, matching the data structure of the registry */
    var returnObject = {
        template: {}
    };


    //////////////////////////////////////////
    // Templates                            //
    //////////////////////////////////////////

    exports.askQueryTemplate = moboUtil.loadTemplate(exports, 'query-ask.wikitext', settings);
    exports.sparqlQueryTemplate = moboUtil.loadTemplate(exports, 'query-sparql.wikitext', settings);


    //////////////////////////////////////////
    // Execution                            //
    //////////////////////////////////////////

    // Generate Form
    var queryWikitext = exports.generateQuery(settings, obj, name);

    if (queryWikitext) {
        returnObject.template[name] = queryWikitext;
    }

    return returnObject;
};

/**
 * Generates the template data from the query file / filetype
 *
 * @param   {object}    settings
 * @param   {object}    obj
 * @param   {string}    name        key-name of the current obj
 *
 * @returns {string|boolean}        generated wikitext
 */
exports.generateQuery = function(settings, obj, name) {
    'use strict';

    var queryNameArray = name.split('.');
    var queryName = queryNameArray[0];
    var queryType = queryNameArray[1];

    var data = {
        query: obj,
        name: queryName
    };

    if (queryType === 'ask') {
        return exports.askQueryTemplate(data);
    } else if (queryType === 'rq' || 'sparql') {
        return exports.sparqlQueryTemplate(data);
    } else {
        log('>>> [W] Query "' + name + '" has wrong filetype!');
    }

};