summaryrefslogtreecommitdiff
path: root/lib/dojo/request/registry.js.uncompressed.js
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2013-03-18 10:26:24 +0400
committerAndrew Dolgov <[email protected]>2013-03-18 10:26:26 +0400
commitf0cfe83e3725f9a3928da97a6e3085e79cb25309 (patch)
tree4b0af188defaa807c7bc6ff3a101b41c9166c463 /lib/dojo/request/registry.js.uncompressed.js
parent9a2885da170ffd64358b99194095851a2d09c1b6 (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.js85
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;
+});