From 964fdabba39b5d461972be5b7d0feb1c6937c883 Mon Sep 17 00:00:00 2001 From: Gabriel Reitz Giannattasio Date: Fri, 7 Feb 2014 11:31:43 -0200 Subject: [PATCH 1/2] Added support to object with prefix for app namespace --- namespace.js | 55 +++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 39 insertions(+), 16 deletions(-) diff --git a/namespace.js b/namespace.js index ee9b511..bf6a8ec 100644 --- a/namespace.js +++ b/namespace.js @@ -1,35 +1,58 @@ /*! * @license RequireJS Namespace Plugin, Copyright (c) 2013 Ates Goral - * @version 0.0.1 + * @version 0.0.2 * Loads modules into a namespace */ -define([ "module" ], function (module) { +define([ 'module' ], function (module) { return { load: function (name, req, onload, config) { var localConfig = module.config(); - var modules = localConfig[name], - path = [ name ]; + var modules = localConfig[name]; if (!modules) { - var err = new Error("Module configuration is missing"); + var err = new Error('Module configuration is missing'); err.namespaceModule = name; onload.error(err); return; } - - modules = modules.split(","); - - var paths = modules.map(function (module) { - path[1] = module; - module = path.join("/"); - - if (localConfig[module]) { - module = "namespace!" + module; + + function createPaths(modules, prefix) { + var path; + if (!prefix) { + path = [ name ]; + } + + if (typeof prefix === 'string') { + path = [ prefix ]; + } + + // Accept an Array + if (modules instanceof Array) { + return modules.map(function (module) { + path[1] = module; + module = path.join("/"); + + if (localConfig[module]) { + module = "namespace!" + module; + } + + return module; + }); } + return []; + } - return module; - }); + var paths; + if (typeof modules === 'object') { + paths = createPaths(modules.files, modules.prefix); + modules = modules.files; + } + + if (typeof modules === 'string') { + modules = modules.split(','); + paths = createPaths(modules); + } req(paths, function () { var namespace = {}, From dc44125e8516a4fd040f7cbfc915addaf95c2ee1 Mon Sep 17 00:00:00 2001 From: Gabriel Reitz Giannattasio Date: Fri, 7 Feb 2014 11:37:16 -0200 Subject: [PATCH 2/2] Added docs for new prefix possibilities --- README.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/README.md b/README.md index ec8fadb..c974b2a 100644 --- a/README.md +++ b/README.md @@ -145,6 +145,37 @@ require([ "namespace!fruits" ], function (fruits) { }); ``` +In a subfolder scenario, you can ignore a folder, creating a prefix for +the custom namespace: + +```js +require.config({ + config: { + namespace: { + "apples": { + prefix: "fruits/apples", + files: "red,green,golden" + } + } +}); + +require([ "namespace!apples" ], function (apples) { + var app = { + apples: apples + }; + + /* + app === { + apples: { + red: , + green: , + golden: + } + } + */ +}); +``` + ## License MIT