Skip to content

Commit 1339c25

Browse files
committed
Added notBlank expander
1 parent 6fe60bb commit 1339c25

File tree

4 files changed

+70
-15
lines changed

4 files changed

+70
-15
lines changed
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?php
2+
3+
namespace Coduo\PHPMatcher\Matcher\Pattern\Expander;
4+
5+
use Coduo\PHPMatcher\Matcher\Pattern\PatternExpander;
6+
use Coduo\ToString\String;
7+
8+
class NotBlank implements PatternExpander
9+
{
10+
private $error;
11+
12+
/**
13+
* @param $value
14+
* @return boolean
15+
*/
16+
public function match($value)
17+
{
18+
if (false === $value || (empty($value) && '0' != $value)) {
19+
$this->error = sprintf("Value %s is not blank.", new String($value));
20+
return false;
21+
}
22+
23+
return true;
24+
}
25+
26+
/**
27+
* @return string|null
28+
*/
29+
public function getError()
30+
{
31+
return $this->error;
32+
}
33+
}

src/Coduo/PHPMatcher/Parser.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ class Parser
2323
* @var array
2424
*/
2525
private $expanderDefinitions = array(
26-
"startsWith" => "Coduo\\PHPMatcher\\Matcher\\Pattern\\Expander\\StartsWith"
26+
"startsWith" => "Coduo\\PHPMatcher\\Matcher\\Pattern\\Expander\\StartsWith",
27+
"notBlank" => "Coduo\\PHPMatcher\\Matcher\\Pattern\\Expander\\NotBlank"
2728
);
2829

2930
/**
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
3+
namespace Coduo\PHPMatcher\Tests\Matcher\Pattern\Expander;
4+
5+
use Coduo\PHPMatcher\Matcher;
6+
use Coduo\PHPMatcher\Matcher\Pattern\Expander\NotBlank;
7+
8+
class NotBlankTest extends \PHPUnit_Framework_TestCase
9+
{
10+
/**
11+
* @dataProvider examplesProvider
12+
*/
13+
public function test_examples_not_ignoring_case($value, $expectedResult)
14+
{
15+
$expander = new NotBlank();
16+
$this->assertEquals($expectedResult, $expander->match($value));
17+
}
18+
19+
public static function examplesProvider()
20+
{
21+
return array(
22+
array("lorem", true),
23+
array("0", true),
24+
array(new \DateTime(), true),
25+
array("", false),
26+
array(null, false),
27+
array(array(), false)
28+
);
29+
}
30+
}

tests/Coduo/PHPMatcher/MatcherTest.php

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,6 @@
22
namespace Coduo\PHPMatcher\Tests;
33

44
use Coduo\PHPMatcher\Lexer;
5-
use Coduo\PHPMatcher\Matcher\ArrayMatcher;
6-
use Coduo\PHPMatcher\Matcher\CaptureMatcher;
7-
use Coduo\PHPMatcher\Matcher\CallbackMatcher;
8-
use Coduo\PHPMatcher\Matcher\ChainMatcher;
9-
use Coduo\PHPMatcher\Matcher\ExpressionMatcher;
10-
use Coduo\PHPMatcher\Matcher\JsonMatcher;
11-
use Coduo\PHPMatcher\Matcher\ScalarMatcher;
12-
use Coduo\PHPMatcher\Matcher\TypeMatcher;
13-
use Coduo\PHPMatcher\Matcher\WildcardMatcher;
145
use Coduo\PHPMatcher\Matcher;
156
use Coduo\PHPMatcher\Parser;
167

@@ -27,9 +18,9 @@ class MatcherTest extends \PHPUnit_Framework_TestCase
2718

2819
public function setUp()
2920
{
30-
$this->captureMatcher = new CaptureMatcher();
21+
$this->captureMatcher = new Matcher\CaptureMatcher();
3122
$parser = new Parser(new Lexer());
32-
$scalarMatchers = new ChainMatcher(array(
23+
$scalarMatchers = new Matcher\ChainMatcher(array(
3324
$this->captureMatcher,
3425
new Matcher\CallbackMatcher(),
3526
new Matcher\ExpressionMatcher(),
@@ -43,12 +34,12 @@ public function setUp()
4334
new Matcher\WildcardMatcher(),
4435
));
4536

46-
$arrayMatcher = new ArrayMatcher($scalarMatchers);
37+
$arrayMatcher = new Matcher\ArrayMatcher($scalarMatchers);
4738

48-
$this->matcher = new Matcher(new ChainMatcher(array(
39+
$this->matcher = new Matcher(new Matcher\ChainMatcher(array(
4940
$scalarMatchers,
5041
$arrayMatcher,
51-
new JsonMatcher($arrayMatcher)
42+
new Matcher\JsonMatcher($arrayMatcher)
5243
)));
5344
}
5445

0 commit comments

Comments
 (0)