extract and test regexp that identifies angular script tag

This commit is contained in:
Igor Minar 2010-10-19 17:07:20 -07:00
parent 2115db6903
commit 644c8514c5
2 changed files with 72 additions and 4 deletions

View file

@ -48,7 +48,8 @@ var _undefined = undefined,
angularFormatter = extensionMap(angular, 'formatter'),
angularService = extensionMap(angular, 'service'),
angularCallbacks = extensionMap(angular, 'callbacks'),
nodeName;
nodeName,
rngScript = /^(|.*\/)angular(-.*)?(\.min)?.js(\?[^#]*)?(#(.*))?$/;
function foreach(obj, iterator, context) {
var key;
@ -422,8 +423,7 @@ function angularInit(config){
}
function angularJsConfig(document, config) {
var filename = /^(.*)angular(-([^\/]*))?.js(\?[^#]*)?(#(.*))?$/,
scripts = document.getElementsByTagName("script"),
var scripts = document.getElementsByTagName("script"),
match;
config = extend({
base_url: '',
@ -431,7 +431,7 @@ function angularJsConfig(document, config) {
ie_compat_id: 'ng-ie-compat'
}, config);
for(var j = 0; j < scripts.length; j++) {
match = (scripts[j].src || "").match(filename);
match = (scripts[j].src || "").match(rngScript);
if (match) {
config.base_url = match[1];
extend(config, parseKeyValue(match[6]));

View file

@ -120,3 +120,71 @@ describe('toKeyValue', function() {
expect(toKeyValue({flag1: true, key: 'value', flag2: true})).toEqual('flag1&key=value&flag2');
});
});
describe ('rngScript', function() {
it('should match angular.js', function() {
expect('angular.js'.match(rngScript)).not.toBeNull();
expect('../angular.js'.match(rngScript)).not.toBeNull();
expect('foo/angular.js'.match(rngScript)).not.toBeNull();
expect('foo.js'.match(rngScript)).toBeNull();
expect('foo/foo.js'.match(rngScript)).toBeNull();
expect('my-angular-app.js'.match(rngScript)).toBeNull();
expect('foo/../my-angular-app.js'.match(rngScript)).toBeNull();
});
it('should match angular.min.js', function() {
expect('angular.min.js'.match(rngScript)).not.toBeNull();
expect('../angular.min.js'.match(rngScript)).not.toBeNull();
expect('foo/angular.min.js'.match(rngScript)).not.toBeNull();
expect('my-angular-app.min.js'.match(rngScript)).toBeNull();
expect('foo/../my-angular-app.min.js'.match(rngScript)).toBeNull();
});
it('should match angular-bootstrap.js', function() {
expect('angular-bootstrap.js'.match(rngScript)).not.toBeNull();
expect('../angular-bootstrap.js'.match(rngScript)).not.toBeNull();
expect('foo/angular-bootstrap.js'.match(rngScript)).not.toBeNull();
expect('my-angular-app-bootstrap.js'.match(rngScript)).toBeNull();
expect('foo/../my-angular-app-bootstrap.js'.match(rngScript)).toBeNull();
});
it('should match angular-0.9.0.js', function() {
expect('angular-0.9.0.js'.match(rngScript)).not.toBeNull();
expect('../angular-0.9.0.js'.match(rngScript)).not.toBeNull();
expect('foo/angular-0.9.0.js'.match(rngScript)).not.toBeNull();
expect('my-angular-app-0.9.0.js'.match(rngScript)).toBeNull();
expect('foo/../my-angular-app-0.9.0.js'.match(rngScript)).toBeNull();
});
it('should match angular-0.9.0.min.js', function() {
expect('angular-0.9.0.min.js'.match(rngScript)).not.toBeNull();
expect('../angular-0.9.0.min.js'.match(rngScript)).not.toBeNull();
expect('foo/angular-0.9.0.min.js'.match(rngScript)).not.toBeNull();
expect('my-angular-app-0.9.0.min.js'.match(rngScript)).toBeNull();
expect('foo/../my-angular-app-0.9.0.min.js'.match(rngScript)).toBeNull();
});
it('should match angular-0.9.0-de0a8612.js', function() {
expect('angular-0.9.0-de0a8612.js'.match(rngScript)).not.toBeNull();
expect('../angular-0.9.0-de0a8612.js'.match(rngScript)).not.toBeNull();
expect('foo/angular-0.9.0-de0a8612.js'.match(rngScript)).not.toBeNull();
expect('my-angular-app-0.9.0-de0a8612.js'.match(rngScript)).toBeNull();
expect('foo/../my-angular-app-0.9.0-de0a8612.js'.match(rngScript)).toBeNull();
});
it('should match angular-0.9.0-de0a8612.min.js', function() {
expect('angular-0.9.0-de0a8612.min.js'.match(rngScript)).not.toBeNull();
expect('../angular-0.9.0-de0a8612.min.js'.match(rngScript)).not.toBeNull();
expect('foo/angular-0.9.0-de0a8612.min.js'.match(rngScript)).not.toBeNull();
expect('my-angular-app-0.9.0-de0a8612.min.js'.match(rngScript)).toBeNull();
expect('foo/../my-angular-app-0.9.0-de0a8612.min.js'.match(rngScript)).toBeNull();
});
});