Source: controller.js

/**
 * @constructor
 */
greppy.Controller = function(options)
{
    var self = this;

    Object.keys(options).forEach(function(key) {
        self[key] = options[key];
    });
};

/**
 * Build a link to an action.
 *
 * @param {String} action - Name of the action to link to
 * @param {Object} params - Parameters object
 * @return {String}
 */
greppy.Controller.prototype.link = function(action, params)
{
    if (!this.actions.hasOwnProperty(action)) {
        throw new Error(
            'Action "' + action + '" is not registered for the controller'
        );
        return;
    }

    var link = this.basePath + this.actions[action].path;

    if (params) {

        Object.keys(params).forEach(function(param) {
            link = link.replace(new RegExp(':' + param + '[\?]?', 'ig'), params[param]);
        });
    }

    return link;
};