summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Gohr <andi@splitbrain.org>2014-10-17 14:23:09 +0200
committerAndreas Gohr <andi@splitbrain.org>2014-10-17 14:23:09 +0200
commitfa3d5aa058cc768bc6716e2559d65d13f045c861 (patch)
tree6bf87b9062d55a1bd3955805e51cd0d7ba20b8a3
parent3259a835bc6b5a3eae5f523bf04f2b08de0d9dad (diff)
parent6275d9067f8a0a7216fece2d49ba2064967bc194 (diff)
downloadrpg-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.php18
-rw-r--r--lib/exe/js.php2
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");