diff options
author | Andrew Dolgov <[email protected]> | 2013-03-18 10:26:24 +0400 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2013-03-18 10:26:26 +0400 |
commit | f0cfe83e3725f9a3928da97a6e3085e79cb25309 (patch) | |
tree | 4b0af188defaa807c7bc6ff3a101b41c9166c463 /lib/dojo/request/registry.js.uncompressed.js | |
parent | 9a2885da170ffd64358b99194095851a2d09c1b6 (diff) |
upgrade dojo to 1.8.3 (refs #570)
Diffstat (limited to 'lib/dojo/request/registry.js.uncompressed.js')
-rw-r--r-- | lib/dojo/request/registry.js.uncompressed.js | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/lib/dojo/request/registry.js.uncompressed.js b/lib/dojo/request/registry.js.uncompressed.js new file mode 100644 index 000000000..b5d28f3e7 --- /dev/null +++ b/lib/dojo/request/registry.js.uncompressed.js @@ -0,0 +1,85 @@ +define("dojo/request/registry", [ + 'require', + '../_base/array', + './default!platform', + './util' +], function(require, array, fallbackProvider, util){ + var providers = []; + + function request(url, options){ + var matchers = providers.slice(0), + i = 0, + matcher; + + while(matcher=matchers[i++]){ + if(matcher(url, options)){ + return matcher.request.call(null, url, options); + } + } + + return fallbackProvider.apply(null, arguments); + } + + function createMatcher(match, provider){ + var matcher; + + if(provider){ + if(match.test){ + // RegExp + matcher = function(url){ + return match.test(url); + }; + }else if(match.apply && match.call){ + matcher = function(){ + return match.apply(null, arguments); + }; + }else{ + matcher = function(url){ + return url === match; + }; + } + + matcher.request = provider; + }else{ + // If only one argument was passed, assume it is a provider function + // to apply unconditionally to all URLs + matcher = function(){ + return true; + }; + + matcher.request = match; + } + + return matcher; + } + + request.register = function(url, provider, first){ + var matcher = createMatcher(url, provider); + providers[(first ? 'unshift' : 'push')](matcher); + + return { + remove: function(){ + var idx; + if(~(idx = array.indexOf(providers, matcher))){ + providers.splice(idx, 1); + } + } + }; + }; + + request.load = function(id, parentRequire, loaded, config){ + if(id){ + // if there's an id, load and set the fallback provider + require([id], function(fallback){ + fallbackProvider = fallback; + loaded(request); + }); + }else{ + loaded(request); + } + }; + + util.addCommonMethods(request); + + return request; +}); |