diff options
author | Andreas Gohr <andi@splitbrain.org> | 2014-10-17 14:23:09 +0200 |
---|---|---|
committer | Andreas Gohr <andi@splitbrain.org> | 2014-10-17 14:23:09 +0200 |
commit | fa3d5aa058cc768bc6716e2559d65d13f045c861 (patch) | |
tree | 6bf87b9062d55a1bd3955805e51cd0d7ba20b8a3 | |
parent | 3259a835bc6b5a3eae5f523bf04f2b08de0d9dad (diff) | |
parent | 6275d9067f8a0a7216fece2d49ba2064967bc194 (diff) | |
download | rpg-fa3d5aa058cc768bc6716e2559d65d13f045c861.tar.gz rpg-fa3d5aa058cc768bc6716e2559d65d13f045c861.tar.bz2 |
Merge pull request #903 from LarsGit223/master
Fixed unrecognized regular expressions behind '&&' or '||' operators in JavaScript compression. Finally fixes #897.
-rw-r--r-- | _test/tests/lib/exe/js_js_compress.test.php | 18 | ||||
-rw-r--r-- | lib/exe/js.php | 2 |
2 files changed, 19 insertions, 1 deletions
diff --git a/_test/tests/lib/exe/js_js_compress.test.php b/_test/tests/lib/exe/js_js_compress.test.php index 78e089d89..648ede07e 100644 --- a/_test/tests/lib/exe/js_js_compress.test.php +++ b/_test/tests/lib/exe/js_js_compress.test.php @@ -58,6 +58,18 @@ class js_js_compress_test extends DokuWikiTest { $this->assertEquals(js_compress($text), 'text.replace(/"/,"//")'); } + function test_regex_after_and_with_slashes_outside_string(){ + $text = 'if ( peng == bla && /pattern\//.test(url)) request = new Something();'; + $this->assertEquals(js_compress($text), + 'if(peng==bla&&/pattern\//.test(url))request=new Something();'); + } + + function test_regex_after_or_with_slashes_outside_string(){ + $text = 'if ( peng == bla || /pattern\//.test(url)) request = new Something();'; + $this->assertEquals(js_compress($text), + 'if(peng==bla||/pattern\//.test(url))request=new Something();'); + } + function test_dquot1(){ $text = 'var foo="Now what \\" \'do we//get /*here*/ ?";'; $this->assertEquals(js_compress($text), $text); @@ -205,6 +217,12 @@ EOF; $this->assertEquals('a=5++-b;',js_compress($text)); } + function test_unusual_signs(){ + $text='var π = Math.PI, τ = 2 * π, halfπ = π / 2, ε = 1e-6, ε2 = ε * ε, radians = π / 180, degrees = 180 / π;'; + $this->assertEquals(js_compress($text), + 'var π=Math.PI,τ=2*π,halfπ=π/2,ε=1e-6,ε2=ε*ε,radians=π/180,degrees=180/π;'); + } + /** * Test the files provided with the original JsStrip */ diff --git a/lib/exe/js.php b/lib/exe/js.php index 2ab78dfc3..545ba7b23 100644 --- a/lib/exe/js.php +++ b/lib/exe/js.php @@ -293,7 +293,7 @@ function js_compress($s){ // E.g. '+ ++' may not be compressed to '+++' --> syntax error. $ops = "+-"; - $regex_starters = array("(", "=", "[", "," , ":", "!"); + $regex_starters = array("(", "=", "[", "," , ":", "!", "&", "|"); $whitespaces_chars = array(" ", "\t", "\n", "\r", "\0", "\x0B"); |