Angular should look for angular-ie-compat file at the right location

The location should be based on the base path of the angular script
and the version identifier of the angular script.

ex: angular.js -> angular-ie-compat.js
    js/angular-0.9.0.min.js -> js/angular-ie-compat-0.9.0.js
This commit is contained in:
Igor Minar 2010-10-19 21:53:16 -07:00
parent 2e687ee56f
commit 6f3a757a37
2 changed files with 28 additions and 3 deletions

View file

@ -49,7 +49,7 @@ var _undefined = undefined,
angularService = extensionMap(angular, 'service'),
angularCallbacks = extensionMap(angular, 'callbacks'),
nodeName,
rngScript = /^(|.*\/)angular(-.*)?(\.min)?.js(\?[^#]*)?(#(.*))?$/;
rngScript = /^(|.*\/)angular(-.*?)?(\.min)?.js(\?[^#]*)?(#(.*))?$/;
function foreach(obj, iterator, context) {
var key;
@ -426,14 +426,13 @@ function angularJsConfig(document, config) {
var scripts = document.getElementsByTagName("script"),
match;
config = extend({
base_url: '',
ie_compat: 'angular-ie-compat.js',
ie_compat_id: 'ng-ie-compat'
}, config);
for(var j = 0; j < scripts.length; j++) {
match = (scripts[j].src || "").match(rngScript);
if (match) {
config.base_url = match[1];
config.ie_compat = match[1] + 'angular-ie-compat' + (match[2] || '') + '.js';
extend(config, parseKeyValue(match[6]));
eachAttribute(jqLite(scripts[j]), function(value, name){
if (/^ng:/.exec(name)) {

View file

@ -223,4 +223,30 @@ describe('angularJsConfig', function() {
ie_compat: 'myjs/angular-ie-compat.js',
ie_compat_id: 'ngcompat'});
});
it("should default to versioned ie-compat file if angular file is versioned", function() {
var doc = { getElementsByTagName: function(tagName) {
expect(lowercase(tagName)).toEqual('script');
return [{nodeName: 'SCRIPT',
src: 'js/angular-0.9.0.js'}];
}};
expect(angularJsConfig(doc)).toEqual({base_url: 'js/',
ie_compat: 'js/angular-ie-compat-0.9.0.js',
ie_compat_id: 'ng-ie-compat'});
});
it("should default to versioned ie-compat file if angular file is versioned and minified", function() {
var doc = { getElementsByTagName: function(tagName) {
expect(lowercase(tagName)).toEqual('script');
return [{nodeName: 'SCRIPT',
src: 'js/angular-0.9.0-cba23f00.min.js'}];
}};
expect(angularJsConfig(doc)).toEqual({base_url: 'js/',
ie_compat: 'js/angular-ie-compat-0.9.0-cba23f00.js',
ie_compat_id: 'ng-ie-compat'});
});
});