Skip to content

Commit 0b4484a

Browse files
authored
Merge pull request #6 from permafrost-dev/use-multi-line-snippets
Use multi line snippets
2 parents 4b958cd + f2fbbf6 commit 0b4484a

12 files changed

Lines changed: 17 additions & 17 deletions

src/Results/FileSearchResults.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public function __construct($file, bool $withSnippets = true)
3333

3434
public function add(ResultNode $resultNode, CodeLocation $location): self
3535
{
36-
$snippet = $this->makeSnippet($location->startLine());
36+
$snippet = $this->makeSnippet($location->startLine(), $location->endLine());
3737

3838
$this->results[] = new SearchResult($resultNode, $location, $snippet, $this->file);
3939

@@ -52,14 +52,14 @@ public function addError(SearchError $errorResult): self
5252
return $this;
5353
}
5454

55-
protected function makeSnippet(int $startLine, int $lineCount = 8): ?CodeSnippet
55+
protected function makeSnippet(int $startLine, int $endLine, int $lineCount = 8): ?CodeSnippet
5656
{
5757
if (! $this->withSnippets) {
5858
return null;
5959
}
6060

6161
return (new CodeSnippet())
62-
->surroundingLine($startLine)
62+
->surroundingLines($startLine, $endLine)
6363
->snippetLineCount($lineCount)
6464
->fromFile($this->file->getRealPath());
6565
}

tests/Results/__snapshots__/SearchResultTest__it_creates_the_object_with_correct_properties__1.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ location:
55
node:
66
name: myVar
77
snippet:
8-
snippetLineCount: 10
8+
snippetLineCount: 5
99
lines: { 1: { selected: false, lineNumber: 1, value: '1', isSelected: false }, 2: { selected: true, lineNumber: 2, value: '2', isSelected: true }, 3: { selected: false, lineNumber: 3, value: '3', isSelected: false }, 4: { selected: false, lineNumber: 4, value: '4', isSelected: false }, 5: { selected: false, lineNumber: 5, value: '5', isSelected: false } }
1010
lineNumberStart: 2
1111
lineNumberEnd: 2
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
-
22
location: { column: 0, endLine: 2, startLine: 2 }
33
node: { variableName: obj, value: { symbol: ., left: { value: 'hello ' }, right: { value: world }, value: '''hello '' . ''world''' }, name: obj }
4-
snippet: { snippetLineCount: 8, lines: { 1: { selected: false, lineNumber: 1, value: '<?php', isSelected: false }, 2: { selected: true, lineNumber: 2, value: ' $obj = ''hello '' . ''world'';', isSelected: true } }, lineNumberStart: 2, lineNumberEnd: 2 }
4+
snippet: { snippetLineCount: 2, lines: { 1: { selected: false, lineNumber: 1, value: '<?php', isSelected: false }, 2: { selected: true, lineNumber: 2, value: ' $obj = ''hello '' . ''world'';', isSelected: true } }, lineNumberStart: 2, lineNumberEnd: 2 }
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
-
22
location: { column: 0, endLine: 2, startLine: 2 }
33
node: { variableName: obj, value: { symbol: +, left: { symbol: +, left: { value: 1 }, right: { value: 3 }, value: '1 + 3' }, right: { value: 2 }, value: '1 + 3 + 2' }, name: obj }
4-
snippet: { snippetLineCount: 8, lines: { 1: { selected: false, lineNumber: 1, value: '<?php', isSelected: false }, 2: { selected: true, lineNumber: 2, value: ' $obj = 1 + 3 + 2;', isSelected: true } }, lineNumberStart: 2, lineNumberEnd: 2 }
4+
snippet: { snippetLineCount: 2, lines: { 1: { selected: false, lineNumber: 1, value: '<?php', isSelected: false }, 2: { selected: true, lineNumber: 2, value: ' $obj = 1 + 3 + 2;', isSelected: true } }, lineNumberStart: 2, lineNumberEnd: 2 }
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
-
22
location: { column: 0, endLine: 4, startLine: 4 }
33
node: { variableName: myVar2, value: [{ key: null, value: { value: 1 } }, { key: null, value: { value: 2 } }, { key: null, value: { value: 3 } }], name: myVar2 }
4-
snippet: { snippetLineCount: 8, lines: { 1: { selected: false, lineNumber: 1, value: '<?php', isSelected: false }, 2: { selected: false, lineNumber: 2, value: ' $myVar = $obj->methodTwo(MyModel::find(1), $obj->methodOne(''two'', [2, 3]), [$this, ''handlerMethod'']);', isSelected: false }, 3: { selected: false, lineNumber: 3, value: '', isSelected: false }, 4: { selected: true, lineNumber: 4, value: ' $myVar2 = [1, 2, 3];', isSelected: true }, 5: { selected: false, lineNumber: 5, value: ' $myVar2 = [...$myVar2, $myVar->someProp, 4, 5, 6];', isSelected: false }, 6: { selected: false, lineNumber: 6, value: ' $myVar2 = [''one'' => 1, ''two'' => $anotherVar->someMethod()];', isSelected: false } }, lineNumberStart: 4, lineNumberEnd: 4 }
4+
snippet: { snippetLineCount: 6, lines: { 1: { selected: false, lineNumber: 1, value: '<?php', isSelected: false }, 2: { selected: false, lineNumber: 2, value: ' $myVar = $obj->methodTwo(MyModel::find(1), $obj->methodOne(''two'', [2, 3]), [$this, ''handlerMethod'']);', isSelected: false }, 3: { selected: false, lineNumber: 3, value: '', isSelected: false }, 4: { selected: true, lineNumber: 4, value: ' $myVar2 = [1, 2, 3];', isSelected: true }, 5: { selected: false, lineNumber: 5, value: ' $myVar2 = [...$myVar2, $myVar->someProp, 4, 5, 6];', isSelected: false }, 6: { selected: false, lineNumber: 6, value: ' $myVar2 = [''one'' => 1, ''two'' => $anotherVar->someMethod()];', isSelected: false } }, lineNumberStart: 4, lineNumberEnd: 4 }
55
-
66
location: { column: 0, endLine: 5, startLine: 5 }
77
node: { variableName: myVar2, value: [{ key: null, value: { name: myVar2 } }, { key: null, value: { objectName: myVar, propertyName: someProp } }, { key: null, value: { value: 4 } }, { key: null, value: { value: 5 } }, { key: null, value: { value: 6 } }], name: myVar2 }
8-
snippet: { snippetLineCount: 8, lines: { 1: { selected: false, lineNumber: 1, value: '<?php', isSelected: false }, 2: { selected: false, lineNumber: 2, value: ' $myVar = $obj->methodTwo(MyModel::find(1), $obj->methodOne(''two'', [2, 3]), [$this, ''handlerMethod'']);', isSelected: false }, 3: { selected: false, lineNumber: 3, value: '', isSelected: false }, 4: { selected: false, lineNumber: 4, value: ' $myVar2 = [1, 2, 3];', isSelected: false }, 5: { selected: true, lineNumber: 5, value: ' $myVar2 = [...$myVar2, $myVar->someProp, 4, 5, 6];', isSelected: true }, 6: { selected: false, lineNumber: 6, value: ' $myVar2 = [''one'' => 1, ''two'' => $anotherVar->someMethod()];', isSelected: false } }, lineNumberStart: 5, lineNumberEnd: 5 }
8+
snippet: { snippetLineCount: 6, lines: { 1: { selected: false, lineNumber: 1, value: '<?php', isSelected: false }, 2: { selected: false, lineNumber: 2, value: ' $myVar = $obj->methodTwo(MyModel::find(1), $obj->methodOne(''two'', [2, 3]), [$this, ''handlerMethod'']);', isSelected: false }, 3: { selected: false, lineNumber: 3, value: '', isSelected: false }, 4: { selected: false, lineNumber: 4, value: ' $myVar2 = [1, 2, 3];', isSelected: false }, 5: { selected: true, lineNumber: 5, value: ' $myVar2 = [...$myVar2, $myVar->someProp, 4, 5, 6];', isSelected: true }, 6: { selected: false, lineNumber: 6, value: ' $myVar2 = [''one'' => 1, ''two'' => $anotherVar->someMethod()];', isSelected: false } }, lineNumberStart: 5, lineNumberEnd: 5 }
99
-
1010
location: { column: 0, endLine: 6, startLine: 6 }
1111
node: { variableName: myVar2, value: [{ key: { value: one }, value: { value: 1 } }, { key: { value: two }, value: { variableName: anotherVar, methodName: someMethod, name: $anotherVar->someMethod, args: { } } }], name: myVar2 }
12-
snippet: { snippetLineCount: 8, lines: { 1: { selected: false, lineNumber: 1, value: '<?php', isSelected: false }, 2: { selected: false, lineNumber: 2, value: ' $myVar = $obj->methodTwo(MyModel::find(1), $obj->methodOne(''two'', [2, 3]), [$this, ''handlerMethod'']);', isSelected: false }, 3: { selected: false, lineNumber: 3, value: '', isSelected: false }, 4: { selected: false, lineNumber: 4, value: ' $myVar2 = [1, 2, 3];', isSelected: false }, 5: { selected: false, lineNumber: 5, value: ' $myVar2 = [...$myVar2, $myVar->someProp, 4, 5, 6];', isSelected: false }, 6: { selected: true, lineNumber: 6, value: ' $myVar2 = [''one'' => 1, ''two'' => $anotherVar->someMethod()];', isSelected: true } }, lineNumberStart: 6, lineNumberEnd: 6 }
12+
snippet: { snippetLineCount: 6, lines: { 1: { selected: false, lineNumber: 1, value: '<?php', isSelected: false }, 2: { selected: false, lineNumber: 2, value: ' $myVar = $obj->methodTwo(MyModel::find(1), $obj->methodOne(''two'', [2, 3]), [$this, ''handlerMethod'']);', isSelected: false }, 3: { selected: false, lineNumber: 3, value: '', isSelected: false }, 4: { selected: false, lineNumber: 4, value: ' $myVar2 = [1, 2, 3];', isSelected: false }, 5: { selected: false, lineNumber: 5, value: ' $myVar2 = [...$myVar2, $myVar->someProp, 4, 5, 6];', isSelected: false }, 6: { selected: true, lineNumber: 6, value: ' $myVar2 = [''one'' => 1, ''two'' => $anotherVar->someMethod()];', isSelected: true } }, lineNumberStart: 6, lineNumberEnd: 6 }
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
-
22
location: { column: 0, endLine: 2, startLine: 2 }
33
node: { name: strtolower, args: [{ value: test }] }
4-
snippet: { snippetLineCount: 8, lines: { 1: { selected: false, lineNumber: 1, value: '<?php', isSelected: false }, 2: { selected: true, lineNumber: 2, value: '$myVar = strtolower(''test'');', isSelected: true } }, lineNumberStart: 2, lineNumberEnd: 2 }
4+
snippet: { snippetLineCount: 2, lines: { 1: { selected: false, lineNumber: 1, value: '<?php', isSelected: false }, 2: { selected: true, lineNumber: 2, value: '$myVar = strtolower(''test'');', isSelected: true } }, lineNumberStart: 2, lineNumberEnd: 2 }
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
-
22
location: { column: 0, endLine: 13, startLine: 13 }
33
node: { name: MyClass }
4-
snippet: { snippetLineCount: 8, lines: { 2: { selected: false, lineNumber: 2, value: ' ray(''12345'');', isSelected: false }, 3: { selected: false, lineNumber: 3, value: '', isSelected: false }, 4: { selected: false, lineNumber: 4, value: ' printf("%s\n", strtolower(''TEST''));', isSelected: false }, 5: { selected: false, lineNumber: 5, value: '', isSelected: false }, 6: { selected: false, lineNumber: 6, value: ' echo strtoupper(''test'') . PHP_EOL;', isSelected: false }, 7: { selected: false, lineNumber: 7, value: '', isSelected: false }, 8: { selected: false, lineNumber: 8, value: ' function test1()', isSelected: false }, 9: { selected: false, lineNumber: 9, value: ' {', isSelected: false }, 10: { selected: false, lineNumber: 10, value: ' Ray::rateLimiter()->count(5);', isSelected: false }, 11: { selected: false, lineNumber: 11, value: ' }', isSelected: false }, 12: { selected: false, lineNumber: 12, value: '', isSelected: false }, 13: { selected: true, lineNumber: 13, value: ' $obj = new MyClass();', isSelected: true }, 14: { selected: false, lineNumber: 14, value: '', isSelected: false }, 15: { selected: false, lineNumber: 15, value: ' $obj->withData([123])->send();', isSelected: false }, 16: { selected: false, lineNumber: 16, value: '', isSelected: false } }, lineNumberStart: 13, lineNumberEnd: 13 }
4+
snippet: { snippetLineCount: 8, lines: { 9: { selected: false, lineNumber: 9, value: ' {', isSelected: false }, 10: { selected: false, lineNumber: 10, value: ' Ray::rateLimiter()->count(5);', isSelected: false }, 11: { selected: false, lineNumber: 11, value: ' }', isSelected: false }, 12: { selected: false, lineNumber: 12, value: '', isSelected: false }, 13: { selected: true, lineNumber: 13, value: ' $obj = new MyClass();', isSelected: true }, 14: { selected: false, lineNumber: 14, value: '', isSelected: false }, 15: { selected: false, lineNumber: 15, value: ' $obj->withData([123])->send();', isSelected: false }, 16: { selected: false, lineNumber: 16, value: '', isSelected: false } }, lineNumberStart: 13, lineNumberEnd: 13 }

tests/__snapshots__/SearcherTest__it_searches_for_function_calls__1.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@
55
-
66
location: { column: 0, endLine: 6, startLine: 6 }
77
node: { name: strtoupper, args: [{ value: test }] }
8-
snippet: { snippetLineCount: 8, lines: { 1: { selected: false, lineNumber: 1, value: '<?php', isSelected: false }, 2: { selected: false, lineNumber: 2, value: ' ray(''12345'');', isSelected: false }, 3: { selected: false, lineNumber: 3, value: '', isSelected: false }, 4: { selected: false, lineNumber: 4, value: ' printf("%s\n", strtolower(''TEST''));', isSelected: false }, 5: { selected: false, lineNumber: 5, value: '', isSelected: false }, 6: { selected: true, lineNumber: 6, value: ' echo strtoupper(''test'') . PHP_EOL;', isSelected: true }, 7: { selected: false, lineNumber: 7, value: '', isSelected: false }, 8: { selected: false, lineNumber: 8, value: ' function test1()', isSelected: false }, 9: { selected: false, lineNumber: 9, value: ' {', isSelected: false } }, lineNumberStart: 6, lineNumberEnd: 6 }
8+
snippet: { snippetLineCount: 8, lines: { 2: { selected: false, lineNumber: 2, value: ' ray(''12345'');', isSelected: false }, 3: { selected: false, lineNumber: 3, value: '', isSelected: false }, 4: { selected: false, lineNumber: 4, value: ' printf("%s\n", strtolower(''TEST''));', isSelected: false }, 5: { selected: false, lineNumber: 5, value: '', isSelected: false }, 6: { selected: true, lineNumber: 6, value: ' echo strtoupper(''test'') . PHP_EOL;', isSelected: true }, 7: { selected: false, lineNumber: 7, value: '', isSelected: false }, 8: { selected: false, lineNumber: 8, value: ' function test1()', isSelected: false }, 9: { selected: false, lineNumber: 9, value: ' {', isSelected: false } }, lineNumberStart: 6, lineNumberEnd: 6 }

tests/__snapshots__/SearcherTest__it_searches_for_function_calls__2.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,4 @@
1313
-
1414
location: { column: 0, endLine: 6, startLine: 6 }
1515
node: { name: strtoupper, args: [{ value: test }] }
16-
snippet: { snippetLineCount: 8, lines: { 1: { selected: false, lineNumber: 1, value: '<?php', isSelected: false }, 2: { selected: false, lineNumber: 2, value: ' ray(''12345'');', isSelected: false }, 3: { selected: false, lineNumber: 3, value: '', isSelected: false }, 4: { selected: false, lineNumber: 4, value: ' printf("%s\n", strtolower(''TEST''));', isSelected: false }, 5: { selected: false, lineNumber: 5, value: '', isSelected: false }, 6: { selected: true, lineNumber: 6, value: ' echo strtoupper(''test'') . PHP_EOL;', isSelected: true }, 7: { selected: false, lineNumber: 7, value: '', isSelected: false }, 8: { selected: false, lineNumber: 8, value: ' function test1()', isSelected: false }, 9: { selected: false, lineNumber: 9, value: ' {', isSelected: false } }, lineNumberStart: 6, lineNumberEnd: 6 }
16+
snippet: { snippetLineCount: 8, lines: { 2: { selected: false, lineNumber: 2, value: ' ray(''12345'');', isSelected: false }, 3: { selected: false, lineNumber: 3, value: '', isSelected: false }, 4: { selected: false, lineNumber: 4, value: ' printf("%s\n", strtolower(''TEST''));', isSelected: false }, 5: { selected: false, lineNumber: 5, value: '', isSelected: false }, 6: { selected: true, lineNumber: 6, value: ' echo strtoupper(''test'') . PHP_EOL;', isSelected: true }, 7: { selected: false, lineNumber: 7, value: '', isSelected: false }, 8: { selected: false, lineNumber: 8, value: ' function test1()', isSelected: false }, 9: { selected: false, lineNumber: 9, value: ' {', isSelected: false } }, lineNumberStart: 6, lineNumberEnd: 6 }
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
-
22
location: { column: 0, endLine: 10, startLine: 10 }
33
node: { className: Ray, methodName: rateLimiter, name: 'Ray::rateLimiter', args: { } }
4-
snippet: { snippetLineCount: 8, lines: { 1: { selected: false, lineNumber: 1, value: '<?php', isSelected: false }, 2: { selected: false, lineNumber: 2, value: ' ray(''12345'');', isSelected: false }, 3: { selected: false, lineNumber: 3, value: '', isSelected: false }, 4: { selected: false, lineNumber: 4, value: ' printf("%s\n", strtolower(''TEST''));', isSelected: false }, 5: { selected: false, lineNumber: 5, value: '', isSelected: false }, 6: { selected: false, lineNumber: 6, value: ' echo strtoupper(''test'') . PHP_EOL;', isSelected: false }, 7: { selected: false, lineNumber: 7, value: '', isSelected: false }, 8: { selected: false, lineNumber: 8, value: ' function test1()', isSelected: false }, 9: { selected: false, lineNumber: 9, value: ' {', isSelected: false }, 10: { selected: true, lineNumber: 10, value: ' Ray::rateLimiter()->count(5);', isSelected: true }, 11: { selected: false, lineNumber: 11, value: ' }', isSelected: false }, 12: { selected: false, lineNumber: 12, value: '', isSelected: false }, 13: { selected: false, lineNumber: 13, value: ' $obj = new MyClass();', isSelected: false } }, lineNumberStart: 10, lineNumberEnd: 10 }
4+
snippet: { snippetLineCount: 8, lines: { 6: { selected: false, lineNumber: 6, value: ' echo strtoupper(''test'') . PHP_EOL;', isSelected: false }, 7: { selected: false, lineNumber: 7, value: '', isSelected: false }, 8: { selected: false, lineNumber: 8, value: ' function test1()', isSelected: false }, 9: { selected: false, lineNumber: 9, value: ' {', isSelected: false }, 10: { selected: true, lineNumber: 10, value: ' Ray::rateLimiter()->count(5);', isSelected: true }, 11: { selected: false, lineNumber: 11, value: ' }', isSelected: false }, 12: { selected: false, lineNumber: 12, value: '', isSelected: false }, 13: { selected: false, lineNumber: 13, value: ' $obj = new MyClass();', isSelected: false } }, lineNumberStart: 10, lineNumberEnd: 10 }

0 commit comments

Comments
 (0)