Show:

File: src/core/Matter.js

                                /**
                                * The `Matter` module is the top level namespace. It also includes a function for installing plugins on top of the library.
                                *
                                * @class Matter
                                */
                                
                                var Matter = {};
                                
                                module.exports = Matter;
                                
                                var Plugin = require('./Plugin');
                                var Common = require('./Common');
                                
                                (function() {
                                
                                    /**
                                     * The library name.
                                     * @property name
                                     * @readOnly
                                     * @type {String}
                                     */
                                    Matter.name = 'matter-js';
                                
                                    /**
                                     * The library version.
                                     * @property version
                                     * @readOnly
                                     * @type {String}
                                     */
                                    Matter.version = typeof __MATTER_VERSION__ !== 'undefined' ? __MATTER_VERSION__ : '*';
                                
                                    /**
                                     * A list of plugin dependencies to be installed. These are normally set and installed through `Matter.use`.
                                     * Alternatively you may set `Matter.uses` manually and install them by calling `Plugin.use(Matter)`.
                                     * @property uses
                                     * @type {Array}
                                     */
                                    Matter.uses = [];
                                
                                    /**
                                     * The plugins that have been installed through `Matter.Plugin.install`. Read only.
                                     * @property used
                                     * @readOnly
                                     * @type {Array}
                                     */
                                    Matter.used = [];
                                
                                    /**
                                     * Installs the given plugins on the `Matter` namespace.
                                     * This is a short-hand for `Plugin.use`, see it for more information.
                                     * Call this function once at the start of your code, with all of the plugins you wish to install as arguments.
                                     * Avoid calling this function multiple times unless you intend to manually control installation order.
                                     * @method use
                                     * @param ...plugin {Function} The plugin(s) to install on `base` (multi-argument).
                                     */
                                    Matter.use = function() {
                                        Plugin.use(Matter, Array.prototype.slice.call(arguments));
                                    };
                                
                                    /**
                                     * Chains a function to excute before the original function on the given `path` relative to `Matter`.
                                     * See also docs for `Common.chain`.
                                     * @method before
                                     * @param {string} path The path relative to `Matter`
                                     * @param {function} func The function to chain before the original
                                     * @return {function} The chained function that replaced the original
                                     */
                                    Matter.before = function(path, func) {
                                        path = path.replace(/^Matter./, '');
                                        return Common.chainPathBefore(Matter, path, func);
                                    };
                                
                                    /**
                                     * Chains a function to excute after the original function on the given `path` relative to `Matter`.
                                     * See also docs for `Common.chain`.
                                     * @method after
                                     * @param {string} path The path relative to `Matter`
                                     * @param {function} func The function to chain after the original
                                     * @return {function} The chained function that replaced the original
                                     */
                                    Matter.after = function(path, func) {
                                        path = path.replace(/^Matter./, '');
                                        return Common.chainPathAfter(Matter, path, func);
                                    };
                                
                                })();