Index: src/mirror-delay.js |
=================================================================== |
--- src/mirror-delay.js (revision 3849) |
+++ src/mirror-delay.js (working copy) |
@@ -1733,7 +1733,8 @@ |
ScriptMirror.prototype.name = function() { |
- return this.script_.name; |
+ // If we have name, we trust it more than sourceURL from comments |
+ return this.script_.name || this.sourceUrlFromComment_(); |
}; |
@@ -1829,6 +1830,29 @@ |
/** |
+ * Returns a suggested script URL from comments in script code (if found), |
+ * undefined otherwise. Used primarily by debuggers for identifying eval()'ed |
+ * scripts. See |
+ * http://fbug.googlecode.com/svn/branches/firebug1.1/docs/ReleaseNotes_1.1.txt |
+ * for details. |
+ * |
+ * @return {?string} value for //@ sourceURL comment |
+ */ |
+ScriptMirror.prototype.sourceUrlFromComment_ = function() { |
+ if (!('sourceUrl_' in this) && this.source()) { |
+ // TODO(608): the spaces in a regexp below had to be escaped as \040 |
+ // because this file is being processed by js2c whose handling of spaces |
+ // in regexps is broken. |
+ // We're not using \s here to prevent \n from matching. |
+ var sourceUrlPattern = /\/\/@[\040\t]sourceURL=[\040\t]*(\S+)[\040\t]*$/m; |
+ var match = sourceUrlPattern.exec(this.source()); |
+ this.sourceUrl_ = match ? match[1] : undefined; |
+ } |
+ return this.sourceUrl_; |
+}; |
+ |
+ |
+/** |
* Mirror object for context. |
* @param {Object} data The context data |
* @constructor |