| /** | |
| * Matomo - free/libre analytics platform | |
| * | |
| * Module creation & inclusion for Piwik. | |
| * | |
| * @link https://matomo.org | |
| * @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later | |
| */ | |
| (function (window) { | |
| var MODULE_SPLIT_REGEX = /[\/.\\]/; | |
| /** | |
| * Returns a module for its ID. Empty modules are created if they does not exist. | |
| * | |
| * Modules are currently stored in the window object. | |
| * | |
| * @param {String} moduleId e.g. 'piwik/UserCountryMap' or 'myPlugin/Widgets/FancySchmancyThing'. | |
| * The following characters can be used to separate individual modules: | |
| * '/', '.' or '\'. | |
| * @return {Object} The module object. | |
| */ | |
| window.require = function (moduleId) { | |
| var parts = moduleId.split(MODULE_SPLIT_REGEX); | |
| // TODO: we use window objects for backwards compatibility. when rest of Piwik is rewritten to use | |
| // require, we can switch simply holding the modules in a private variable. | |
| var currentModule = window; | |
| for (var i = 0; i != parts.length; ++i) { | |
| var part = parts[i]; | |
| currentModule[part] = currentModule[part] || {}; | |
| currentModule = currentModule[part]; | |
| } | |
| return currentModule; | |
| }; | |
| })(window); | |