From: Ebrahim Byagowi Date: Fri, 19 Jul 2013 23:16:07 +0000 (+0000) Subject: Tweak CSSJanus to support noflip for selectors with parentheses X-Git-Tag: 1.31.0-rc.0~19159^2 X-Git-Url: https://git.cyclocoop.org/%7B%24www_url%7Dadmin/compta/banques/ajouter.php?a=commitdiff_plain;h=bda65740a8cd00e5df408b67ac0b04ae9740edfc;p=lhc%2Fweb%2Fwiklou.git Tweak CSSJanus to support noflip for selectors with parentheses Also suggested for CSSJanus itself at http://code.google.com/p/cssjanus/issues/detail?id=22 Change-Id: I4e3b21522e9c5a72cd456ed3d6a0be9225e4b70d --- diff --git a/includes/libs/CSSJanus.php b/includes/libs/CSSJanus.php index f70e00ac66..128d9b9031 100644 --- a/includes/libs/CSSJanus.php +++ b/includes/libs/CSSJanus.php @@ -99,7 +99,7 @@ class CSSJanus { $patterns['possibly_negative_quantity'] = "((?:-?{$patterns['quantity']})|(?:inherit|auto))"; $patterns['color'] = "(#?{$patterns['nmchar']}+|(?:rgba?|hsla?)\([ \d.,%-]+\))"; $patterns['url_chars'] = "(?:{$patterns['url_special_chars']}|{$patterns['nonAscii']}|{$patterns['escape']})*"; - $patterns['lookahead_not_open_brace'] = "(?!({$patterns['nmchar']}|\r?\n|\s|#|\:|\.|\,|\+|>)*?{)"; + $patterns['lookahead_not_open_brace'] = "(?!({$patterns['nmchar']}|\r?\n|\s|#|\:|\.|\,|\+|>|\(|\))*?{)"; $patterns['lookahead_not_closing_paren'] = "(?!{$patterns['url_chars']}?{$patterns['valid_after_uri_chars']}\))"; $patterns['lookahead_for_closing_paren'] = "(?={$patterns['url_chars']}?{$patterns['valid_after_uri_chars']}\))"; $patterns['noflip_single'] = "/({$patterns['noflip_annotation']}{$patterns['lookahead_not_open_brace']}[^;}]+;?)/i"; diff --git a/tests/phpunit/includes/libs/CSSJanusTest.php b/tests/phpunit/includes/libs/CSSJanusTest.php index b51dbdf267..d80a571c07 100644 --- a/tests/phpunit/includes/libs/CSSJanusTest.php +++ b/tests/phpunit/includes/libs/CSSJanusTest.php @@ -393,6 +393,11 @@ class CSSJanusTest extends MediaWikiTestCase { '/* @noflip */ div { float: left; } .foo { float: left; }', '/* @noflip */ div { float: left; } .foo { float: right; }' ), + array( + // support parentheses in selector + '/* @noflip */ .test:not(:first) { margin-right: -0.25em; margin-left: 0.25em; }', + '/* @noflip */ .test:not(:first) { margin-right: -0.25em; margin-left: 0.25em; }' + ), array( // after multiple rules '.foo { float: left; } /* @noflip */ div { float: left; }',