Permalink
Browse files

Issue #5307: HTML regexp when match is false

When match is false the html5 validation regexp should be either inverted or not added.
Since we are in RC added a fix where this is not added, but marked a @todo so that this
can be revisited and we try to inverse the regexp instead.
  • Loading branch information...
1 parent bc926ae commit f111503fafc55e8c0c172788488dcc9d92252c28 @rdohms rdohms committed Aug 30, 2012
Showing with 17 additions and 0 deletions.
  1. +10 −0 Constraints/Regex.php
  2. +7 −0 Tests/Constraints/RegexValidatorTest.php
View
10 Constraints/Regex.php
@@ -62,13 +62,23 @@ public function getHtmlPattern()
* Convert the htmlPattern to a suitable format for HTML5 pattern.
* Example: /^[a-z]+$/ would be converted to [a-z]+
* However, if options are specified, it cannot be converted
+ *
+ * Pattern is also ignored if match=false since the pattern should
+ * then be reversed before application.
+ *
+ * @todo reverse pattern in case match=false as per issue #5307
*
* @link http://dev.w3.org/html5/spec/single-page.html#the-pattern-attribute
*
* @return string|null
*/
private function getNonDelimitedPattern()
{
+ // If match = false, pattern should not be added to HTML5 validation
+ if (!$this->match) {
+ return null;
+ }
+
if (preg_match('/^(.)(\^?)(.*?)(\$?)\1$/', $this->pattern, $matches)) {
$delimiter = $matches[1];
$start = empty($matches[2]) ? '.*' : '';
View
7 Tests/Constraints/RegexValidatorTest.php
@@ -162,6 +162,13 @@ public function testHtmlPattern()
'pattern' => '/[a-z]+/',
));
$this->assertEquals('.*[a-z]+.*', $constraint->getHtmlPattern());
+
+ // Dropped because of match=false
+ $constraint = new Regex(array(
+ 'pattern' => '/[a-z]+/',
+ 'match' => false
+ ));
+ $this->assertNull($constraint->getHtmlPattern());
}
}

0 comments on commit f111503

Please sign in to comment.