MDL-40478 JavaScript: Support loading of YUI submodules in the yui-loader
[moodle.git] / lib / yui / config / moodle.js
index f1532cb..355bd53 100644 (file)
 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
 
 // A module name should be composed of:
-// moodle-<component>-<module>[-skin]
-var path = me.path,
-    parts = me.name.replace(/^moodle-/,'').split('-', 3),
-    modulename = parts.pop();
+// moodle-<component>-<module>[-<submodule>][-skin]
+var parts = me.name.replace(/^moodle-/,'').split('-'),
+    component = parts.shift(),
+    module = parts[0],
+    min = '-min';
 
-if (/(skin|core)/.test(modulename)) {
+if (/-(skin|core)$/.test(me.name)) {
     // For these types, we need to remove the final word and set the type.
-    modulename = parts.pop();
+    parts.pop();
     me.type = 'css';
+
+    // CSS is not minified - clear the min option.
+    min = '';
 }
 
-// Build the first part of the filename.
-me.path = parts.join('-') + '/' + modulename + '/' + modulename;
+if (module) {
+    // Determine the filename based on the remaining parts.
+    var filename = parts.join('-');
 
-// CSS is not minified, but all other types are.
-if (me.type !== 'css') {
-    me.path = me.path + '-min';
+    // Build the first part of the filename.
+    me.path = component + '/' + module + '/' + filename + min + '.' + me.type;
+} else {
+    // This is a hangup from the old ways of writing Modules.
+    // We will start to warn about this once we have removed all core components of this form.
+    me.path = component + '/' + component + '.' + me.type;
 }
-
-// Add the file extension.
-me.path = me.path + '.' + me.type;