File modules/editor/codemirror/demo/spanaffectswrapping_shim.html

Last commit: Tue May 22 22:39:49 2018 +0200	Jan Dankert	Fix für PHP 7.2: 'Object' darf nun nicht mehr als Klassennamen verwendet werden. AUCH NICHT IN EINEM NAMESPACE! WTF, wozu habe ich das in einen verfickten Namespace gepackt? Wozu soll der sonst da sein??? Amateure. Daher nun notgedrungen unbenannt in 'BaseObject'.
1 <!doctype html> 2 3 <title>CodeMirror: Automatically derive odd wrapping behavior for your browser</title> 4 <meta charset="utf-8"/> 5 <link rel=stylesheet href="../doc/docs.css"> 6 7 <div id=nav> 8 <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../doc/logo.png"></a> 9 10 <ul> 11 <li><a href="../index.html">Home</a> 12 <li><a href="../doc/manual.html">Manual</a> 13 <li><a href="https://github.com/codemirror/codemirror">Code</a> 14 </ul> 15 <ul> 16 <li><a class=active href="#">Automatically derive odd wrapping behavior for your browser</a> 17 </ul> 18 </div> 19 20 <article> 21 <h2>Automatically derive odd wrapping behavior for your browser</h2> 22 23 24 <p>This is a hack to automatically derive 25 a <code>spanAffectsWrapping</code> regexp for a browser. See the 26 comments above that variable 27 in <a href="../lib/codemirror.js"><code>lib/codemirror.js</code></a> 28 for some more details.</p> 29 30 <div style="white-space: pre-wrap; width: 50px;" id="area"></div> 31 <pre id="output"></pre> 32 33 <script id="script"> 34 var a = document.getElementById("area"), bad = Object.create(null); 35 var chars = "a~`!@#$%^&*()-_=+}{[]\\|'\"/?.>,<:;", l = chars.length; 36 for (var x = 0; x < l; ++x) for (var y = 0; y < l; ++y) { 37 var s1 = "foooo" + chars.charAt(x), s2 = chars.charAt(y) + "br"; 38 a.appendChild(document.createTextNode(s1 + s2)); 39 var h1 = a.offsetHeight; 40 a.innerHTML = ""; 41 a.appendChild(document.createElement("span")).appendChild(document.createTextNode(s1)); 42 a.appendChild(document.createElement("span")).appendChild(document.createTextNode(s2)); 43 if (a.offsetHeight != h1) 44 bad[chars.charAt(x)] = (bad[chars.charAt(x)] || "") + chars.charAt(y); 45 a.innerHTML = ""; 46 } 47 48 var re = ""; 49 function toREElt(str) { 50 if (str.length > 1) { 51 var invert = false; 52 if (str.length > chars.length * .6) { 53 invert = true; 54 var newStr = ""; 55 for (var i = 0; i < l; ++i) if (str.indexOf(chars.charAt(i)) == -1) newStr += chars.charAt(i); 56 str = newStr; 57 } 58 str = str.replace(/[\-\.\]\"\'\\\/\^a]/g, function(orig) { return orig == "a" ? "\\w" : "\\" + orig; }); 59 return "[" + (invert ? "^" : "") + str + "]"; 60 } else if (str == "a") { 61 return "\\w"; 62 } else if (/[?$*()+{}[\]\.|/\'\"]/.test(str)) { 63 return "\\" + str; 64 } else { 65 return str; 66 } 67 } 68 69 var newRE = ""; 70 for (;;) { 71 var left = null; 72 for (var left in bad) break; 73 if (left == null) break; 74 var right = bad[left]; 75 delete bad[left]; 76 for (var other in bad) if (bad[other] == right) { 77 left += other; 78 delete bad[other]; 79 } 80 newRE += (newRE ? "|" : "") + toREElt(left) + toREElt(right); 81 } 82 83 document.getElementById("output").appendChild(document.createTextNode("Your regexp is: " + (newRE || "^$"))); 84 </script> 85 </article>
Download modules/editor/codemirror/demo/spanaffectswrapping_shim.html
History Tue, 22 May 2018 22:39:49 +0200 Jan Dankert Fix für PHP 7.2: 'Object' darf nun nicht mehr als Klassennamen verwendet werden. AUCH NICHT IN EINEM NAMESPACE! WTF, wozu habe ich das in einen verfickten Namespace gepackt? Wozu soll der sonst da sein??? Amateure. Daher nun notgedrungen unbenannt in 'BaseObject'.