-
Notifications
You must be signed in to change notification settings - Fork 112
/
Copy pathRegexTest.php
54 lines (44 loc) · 1.91 KB
/
RegexTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?php
namespace SRLTests;
use SRL\Builder;
use SRL\SRL;
class RegexTest extends TestCase
{
public function testTrimmingWhitespaces()
{
$regEx = SRL::anyOf(function (Builder $query) {
$query->and(function (Builder $query) {
$query->startsWith()->whitespace()->onceOrMore();
})->and(function (Builder $query) {
$query->whitespace()->onceOrMore()->mustEnd();
});
});
$this->assertEquals('example', $regEx->replace('', ' example '));
$this->assertEquals('example', $regEx->replace('', 'example'));
$this->assertEquals('exam ple', $regEx->replace('', ' exam ple '));
}
public function testHtmlTagGrabber()
{
$regEx = SRL::literally('<')->capture(function (Builder $query) {
$query->letter()->onceOrMore();
}, 'name')->any()->neverOrMore()->until('>')->capture(function (Builder $query) {
$query->any()->onceOrMore();
}, 'content')->until('<')->caseInsensitive();
$results = $regEx->getMatches('<foo bla="gedoens">bar</foo><baz>baz</baz>');
$this->assertEquals('foo', $results[0]->get('name'));
$this->assertEquals('bar', $results[0]->get('content'));
$this->assertEquals('baz', $results[1]->get('name'));
$this->assertEquals('baz', $results[1]->get('content'));
}
public function testAnonymousHtmlTagGrabber()
{
$regEx = SRL::literally('<')->capture(function (Builder $query) {
$query->letter()->onceOrMore();
})->any()->neverOrMore()->until('>')->capture(function (Builder $query) {
$query->any()->onceOrMore();
})->until('<')->caseInsensitive();
$results = $regEx->getMatches('<foo bla="gedoens">bar</foo><baz>baz</baz>');
$this->assertEquals(['foo', 'bar'], $results[0]->all());
$this->assertEquals(['baz', 'baz'], $results[1]->all());
}
}