Made _getScriptLocation smarter, and added it to SingleFile.js also. This means that single file builds no longer need to contain OpenLayers.js. r=eleomine (closes #2873)

git-svn-id: http://svn.openlayers.org/trunk/openlayers@10822 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
ahocevar
2010-10-13 13:02:08 +00:00
parent 8dc19c84c7
commit 485ebaa316
10 changed files with 129 additions and 67 deletions

View File

@@ -14,28 +14,21 @@
* Before creating the OpenLayers namespace, check to see if
* OpenLayers.singleFile is true. This occurs if the
* OpenLayers/SingleFile.js script is included before this one - as is the
* case with single file builds.
* case with old single file build profiles that included both
* OpenLayers.js and OpenLayers/SingleFile.js.
*/
var singleFile = (typeof OpenLayers == "object" && OpenLayers.singleFile);
/**
* Cache for the script location returned from
* OpenLayers._getScriptLocation
* Relative path of this script.
*/
var scriptLocation;
var scriptName = (!singleFile) ? "lib/OpenLayers.js" : "OpenLayers.js";
/**
* Namespace: OpenLayers
* The OpenLayers object provides a namespace for all things OpenLayers
*/
window.OpenLayers = {
/**
* Property: _scriptName
* {String} Relative path of this script.
*/
_scriptName: (!singleFile) ? "lib/OpenLayers.js" : "OpenLayers.js",
/**
* Function: _getScriptLocation
* Return the path to this script.
@@ -43,26 +36,12 @@
* Returns:
* {String} Path to this script
*/
_getScriptLocation: function () {
if (scriptLocation != undefined) {
return scriptLocation;
}
scriptLocation = "";
var isOL = new RegExp("(^|(.*?\\/))(" + OpenLayers._scriptName + ")(\\?|$)");
var scripts = document.getElementsByTagName('script');
for (var i=0, len=scripts.length; i<len; i++) {
var src = scripts[i].getAttribute('src');
if (src) {
var match = src.match(isOL);
if(match) {
scriptLocation = match[1];
break;
}
}
}
return scriptLocation;
}
_getScriptLocation: (function() {
var r = new RegExp("(^|(.*?\\/))(" + scriptName + ")(\\?|$)");
var s = document.getElementsByTagName('script');
var l = s[s.length-1].getAttribute("src").match(r)[1];
return (function() { return l; });
})()
};
/**
* OpenLayers.singleFile is a flag indicating this file is being included

View File

@@ -4,7 +4,12 @@
* full text of the license. */
var OpenLayers = {
singleFile: true
singleFile: true,
_getScriptLocation: (function() {
var s = document.getElementsByTagName('script');
var l = s[s.length-1].getAttribute("src").match(/(^|(.*?\/))(OpenLayers\.js)(\?|$)/)[1];
return (function() { return l; });
})()
};