Skip to content

Commit 0be3f55

Browse files
committed
Line-separator fixes
Fixed an (unlikely) minor bug risk in an while loop at the CleanParam render
1 parent 1343082 commit 0be3f55

31 files changed

Lines changed: 41 additions & 39 deletions

docs/methods/RenderClient.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
### compatibility
1313
```php
14+
@param string $lineSeparator
1415
@return string
1516
```
1617
Generates an robots.txt optimized for parsing by custom 3rd party parsers, witch do not follow the standards.

src/Client/Cache/MySQL/Manager.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ private function push(UriClient $client, $worker = 0)
179179
return true;
180180
}
181181
$validUntil = $client->validUntil();
182-
$content = $client->render()->compressed("\n");
182+
$content = $client->render()->compressed(PHP_EOL);
183183
$query = $this->pdo->prepare(<<<SQL
184184
INSERT INTO robotstxt__cache1 (base, content, statusCode, validUntil, nextUpdate, effective)
185185
VALUES (:base, :content, :statusCode, :validUntil, :nextUpdate, :effective)

src/Client/RenderClient.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,12 @@ public function __construct(RootDirectiveHandler $handler)
4343
* - Byte consuming, may be multiple times larger (depending on the number of user-agents)
4444
* - Maximum compatibility, optimized for badly written 3rd party parsers with limited specification support
4545
*
46+
* @param string $lineSeparator
4647
* @return string
4748
*/
48-
public function compatibility()
49+
public function compatibility($lineSeparator = "\r\n")
4950
{
50-
return $this->generate(3, "\r\n") . "\r\n";
51+
return $this->generate(3, $lineSeparator) . $lineSeparator;
5152
}
5253

5354
/**
@@ -113,7 +114,7 @@ public function normal($lineSeparator = "\r\n")
113114
* @param string $lineSeparator
114115
* @return string
115116
*/
116-
public function compressed($lineSeparator = "\r\n")
117+
public function compressed($lineSeparator = PHP_EOL)
117118
{
118119
return $this->generate(0, $lineSeparator);
119120
}

src/Parser/Directives/CleanParamParserCore.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,9 @@ private function renderExtensive(RenderHandler $handler)
9292
private function renderCompressed(RenderHandler $handler)
9393
{
9494
$pair = $this->cleanParam;
95-
while (!empty($pair)) {
96-
$equalParams = array_keys($pair, current($pair));
97-
foreach (current($pair) as $path) {
95+
while (($currentPair = current($pair)) !== false) {
96+
$equalParams = array_keys($pair, $currentPair);
97+
foreach ($currentPair as $path) {
9898
$handler->add(self::DIRECTIVE_CLEAN_PARAM, implode('&', $equalParams) . ' ' . $path);
9999
}
100100
foreach ($equalParams as $param) {

tests/AllowTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ public function testDisAllow($robotsTxtContent, $rendered)
8888
$this->assertFalse($parser->userAgent('crawlerZ')->isAllowed("/public"));
8989

9090
if ($rendered !== false) {
91-
$this->assertEquals($rendered, $parser->render()->normal());
91+
$this->assertEquals($rendered, $parser->render()->normal("\n"));
9292
$this->testDisAllow($rendered, false);
9393
}
9494
}
@@ -102,7 +102,7 @@ public function testDisAllowIsListed($robotsTxtContent, $rendered)
102102
{
103103
$parser = new RobotsTxtParser\TxtClient('http://example.com', 200, $robotsTxtContent);
104104
$this->assertInstanceOf('vipnytt\RobotsTxtParser\TxtClient', $parser);
105-
$this->assertEquals($rendered, $parser->render()->normal());
105+
$this->assertEquals($rendered, $parser->render()->normal("\n"));
106106

107107
$this->assertTrue($parser->userAgent('*')->disallow()->isListed('/admin'));
108108
$this->assertTrue($parser->userAgent('agentV')->allow()->isListed('/bar'));

tests/AtSymbolTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public function testAtSymbol($robotsTxtContent, $rendered)
3535
$this->assertFalse($parser->userAgent()->isAllowed("/url_containing_@_symbol"));
3636

3737
if ($rendered !== false) {
38-
$this->assertEquals($rendered, $parser->render()->normal());
38+
$this->assertEquals($rendered, $parser->render()->normal("\n"));
3939
$this->testAtSymbol($rendered, false);
4040
}
4141
}

tests/CacheDelayTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public function testCacheDelay($robotsTxtContent, $rendered)
3434
$this->assertEquals(9.2, $parser->userAgent('BingBot')->cacheDelay()->getValue());
3535

3636
if ($rendered !== false) {
37-
$this->assertEquals($rendered, $parser->render()->normal());
37+
$this->assertEquals($rendered, $parser->render()->normal("\n"));
3838
$this->testCacheDelay($rendered, false);
3939
}
4040
}

tests/CaseSensitiveTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ public function testCaseSensitive($robotsTxtContent, $rendered)
7474
$this->assertFalse($parser->userAgent()->isDisallowed("/"));
7575

7676
if ($rendered !== false) {
77-
$this->assertEquals($rendered, $parser->render()->normal());
77+
$this->assertEquals($rendered, $parser->render()->normal("\n"));
7878
$this->testCaseSensitive($rendered, false);
7979
}
8080
}

tests/CleanParamTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public function testCleanParam($robotsTxtContent, $result, $rendered)
4242
$this->assertEquals($result['Allow'], $parser->userAgent()->allow()->cleanParam()->export());
4343

4444
if ($rendered !== false) {
45-
$this->assertEquals($rendered, $parser->render()->normal());
45+
$this->assertEquals($rendered, $parser->render()->normal("\n"));
4646
$this->testCleanParam($rendered, $result, false);
4747
}
4848
}

tests/CommentTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public function testComment($robotsTxtContent, $result, $rendered)
3434
$this->assertFalse($parser->userAgent('receiver')->isAllowed("/"));
3535

3636
if ($rendered !== false) {
37-
$this->assertEquals($rendered, $parser->render()->normal());
37+
$this->assertEquals($rendered, $parser->render()->normal("\n"));
3838
$this->testComment($rendered, $result, false);
3939
}
4040
}

0 commit comments

Comments
 (0)