| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 | 
							- <!doctype html>
 
- <html>
 
-   <head>
 
-     <meta charset="utf-8">
 
-     <title>CodeMirror: Automatically derive odd wrapping behavior for your browser</title>
 
-     <link rel="stylesheet" href="../doc/docs.css">
 
-   </head>
 
-   <body>
 
-     <h1>CodeMirror: odd wrapping shim</h1>
 
-     <p>This is a hack to automatically derive
 
-     a <code>spanAffectsWrapping</code> regexp for a browser. See the
 
-     comments above that variable
 
-     in <a href="../lib/codemirror.js"><code>lib/codemirror.js</code></a>
 
-     for some more details.</p>
 
-     <div style="white-space: pre-wrap; width: 50px;" id="area"></div>
 
-     <pre id="output"></pre>
 
-     <script id="script">
 
-       var a = document.getElementById("area"), bad = Object.create(null);
 
-       var chars = "a~`!@#$%^&*()-_=+}{[]\|'\"/?.>,<:;", l = chars.length;
 
-       for (var x = 0; x < l; ++x) for (var y = 0; y < l; ++y) {
 
-         var s1 = "foooo" + chars.charAt(x), s2 = chars.charAt(y) + "br";
 
-         a.appendChild(document.createTextNode(s1 + s2));
 
-         var h1 = a.offsetHeight;
 
-         a.innerHTML = "";
 
-         a.appendChild(document.createElement("span")).appendChild(document.createTextNode(s1));
 
-         a.appendChild(document.createElement("span")).appendChild(document.createTextNode(s2));
 
-         if (a.offsetHeight != h1)
 
-           bad[chars.charAt(x)] = (bad[chars.charAt(x)] || "") + chars.charAt(y);
 
-         a.innerHTML = "";
 
-       }
 
-       var re = "";
 
-       function toREElt(str) {
 
-         if (str.length > 1) {
 
-           var invert = false;
 
-           if (str.length > chars.length * .6) {
 
-             invert = true;
 
-             var newStr = "";
 
-             for (var i = 0; i < l; ++i) if (str.indexOf(chars.charAt(i)) == -1) newStr += chars.charAt(i);
 
-             str = newStr;
 
-           }
 
-           str = str.replace(/[\-\.\]\"\'\\\/\^a]/g, function(orig) { return orig == "a" ? "\\w" : "\\" + orig; });
 
-           return "[" + (invert ? "^" : "") + str + "]";
 
-         } else if (str == "a") {
 
-           return "\\w";
 
-         } else if (/[?$*()+{}[\]\.|/\'\"]/.test(str)) {
 
-           return "\\" + str;
 
-         } else {
 
-           return str;
 
-         }
 
-       }
 
-       var newRE = "";
 
-       for (;;) {
 
-         var left = null;
 
-         for (var left in bad) break;
 
-         if (left == null) break;
 
-         var right = bad[left];
 
-         delete bad[left];
 
-         for (var other in bad) if (bad[other] == right) {
 
-           left += other;
 
-           delete bad[other];
 
-         }
 
-         newRE += (newRE ? "|" : "") + toREElt(left) + toREElt(right);
 
-       }
 
-       document.getElementById("output").appendChild(document.createTextNode("Your regexp is: " + (newRE || "^$")));
 
-     </script>
 
-   </body>
 
- </html>
 
 
  |