Source: plugin/PluginNodeDescription.js

/*globals define*/
/*eslint-env node, browser*/

/**
 * A module representing a PluginNodeDescription.
 *
 * @author lattmann / https://github.com/lattmann
 */


(function (factory) {
    if (typeof define === 'function' && define.amd) {
        define([], factory);
    } else if (typeof module === 'object' && module.exports) {
        module.exports = factory();
    }
}(function () {
    'use strict';
    /**
     * Initializes a new instance of plugin node description object.
     *
     * Note: this object is JSON serializable see serialize method.
     *
     * @param config - deserializes an existing configuration to this object.
     * @constructor
     * @alias PluginNodeDescription
     */
    var PluginNodeDescription = function (config) {
        var keys,
            i;

        this.name = '';
        this.id = '';

        if (config) {
            keys = Object.keys(config);
            for (i = 0; i < keys.length; i += 1) {
                this[keys[i]] = config[keys[i]];
            }
        }
    };

    /**
     * Serializes this object to a JSON representation.
     *
     * @returns {{}}
     */
    PluginNodeDescription.prototype.serialize = function () {
        var keys = Object.keys(this),
            result = {},
            i;

        for (i = 0; i < keys.length; i += 1) {
            result[keys[i]] = this[keys[i]];
        }

        return result;
    };

    return PluginNodeDescription;
}));