diff --git a/demo/ie_quirks.html b/demo/ie_quirks.html new file mode 100644 index 00000000..26a62c58 --- /dev/null +++ b/demo/ie_quirks.html @@ -0,0 +1,42 @@ + + +
+ + +function foo(items) {
+ var i;
+ for (i = 0; i < items.length; i++) {
+ alert("Ace Rocks " + items[i]);
+ }
+}
+
+
+
+
+
+
diff --git a/lib/ace/ext/ie_quirks.js b/lib/ace/ext/ie_quirks.js
new file mode 100644
index 00000000..3bbbbf56
--- /dev/null
+++ b/lib/ace/ext/ie_quirks.js
@@ -0,0 +1,73 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Distributed under the BSD license:
+ *
+ * Copyright (c) 2010, Ajax.org B.V.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Ajax.org B.V. nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+define(function(require, exports, module) {
+"use strict";
+var MAX_TOKEN_COUNT = 1000;
+var useragent = require("../lib/useragent")
+var TokenizerModule = require("../tokenizer")
+
+var compliantExecNpcg = /()??/.exec("")[1] === undefined;
+compliantExecNpcg=0
+if (compliantExecNpcg)
+ return;
+if (useragent.isIE && useragent.isIE < 10 && window.top.document.compatMode === "BackCompat")
+ useragent.isOldIE = true;
+
+
+var proto = TokenizerModule.Tokenizer.prototype;
+eval("TokenizerModule.Tokenizer = " +
+ TokenizerModule.Tokenizer.toString().replace(
+ "ruleRegExps.push(adjustedregex);\n", function(m) {
+ return m + '\
+ if (state[i].next && RegExp(adjustedregex).test(""))\n\
+ rule._qre = RegExp(adjustedregex, "g");\n\
+ '
+ }
+ )
+);
+TokenizerModule.Tokenizer.prototype = proto;
+eval("proto.getLineTokens = " +
+ proto.getLineTokens.toString().replace(
+ /if \(match\[i \+ 1\] === undefined\)\s*continue;/,
+ "if (!match[i + 1]) {\n\
+ if (value)continue;\n\
+ var qre = state[mapping[i]]._qre;\n\
+ if (!qre) continue;\n\
+ qre.lastIndex = lastIndex;\n\
+ if (!qre.exec(line) || qre.lastIndex != lastIndex)\n\
+ continue;\n\
+ }"
+ )
+);
+
+
+
+});