Skip to content

Commit 792b8c3

Browse files
committed
Improve link generation in renderer
1 parent b679075 commit 792b8c3

3 files changed

Lines changed: 15 additions & 8 deletions

File tree

src/Ide.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use function http_build_query;
88
use function is_string;
99
use function ltrim;
10+
use function str_replace;
1011
use function strtolower;
1112

1213
enum Ide: string
@@ -27,7 +28,7 @@ public static function fromEnv(?string $default = null): self
2728
return self::tryFrom(strtolower((string) $value)) ?? self::PhpStorm;
2829
}
2930

30-
public function uri(CallLocation $location, ?string $project = null): string
31+
public function uri(CallLocation $location, string $project = 'UNKNOWN_PROJECT'): string
3132
{
3233
return match ($this) {
3334
self::JetBrains => 'jetbrains://php-storm/navigate/reference?'.http_build_query(['project' => $project, 'path' => $location->path, 'line' => $location->line]),
@@ -38,7 +39,7 @@ public function uri(CallLocation $location, ?string $project = null): string
3839

3940
public function path(CallLocation $location): string
4041
{
41-
return $location->path.':'.$location->line;
42+
return str_replace('\\', '/', (string) $location->path).':'.$location->line;
4243
}
4344

4445
public function link(CallLocation $location, ?string $project = null, AnsiStyle ...$styles): string
@@ -48,6 +49,6 @@ public function link(CallLocation $location, ?string $project = null, AnsiStyle
4849
return $path;
4950
}
5051

51-
return '<a class="'.AnsiStyle::inlineClasses(...$styles).'" href="'.$this->uri($location, $project).'">'.$path.'</a>';
52+
return '<a class="'.AnsiStyle::inlineClasses(...$styles).'" href="'.$this->uri($location, $project ?? 'UNKNOWN_PROJECT').'">'.$path.'</a>';
5253
}
5354
}

src/Renderer.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ private function renderHeader(?Profile $profile, ?CallLocation $callLocation): s
191191
$header[] = '<p class="bkm-sw-header">';
192192
if (null !== $callLocation) {
193193
$header[] = AnsiStyle::wrapHtml('class', 'Path: ', AnsiStyle::BrightGreen);
194-
$header[] = Ide::fromEnv()->link($callLocation, null, AnsiStyle::White);
194+
$header[] = Ide::fromEnv()->link($callLocation, null, AnsiStyle::BrightCyan, AnsiStyle::Bold);
195195
$header[] = '<br>';
196196
}
197197

src/ViewExporter.php

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,12 @@ private function exportLeaderPrinter(array $data): void
6565

6666
public function exportSnapshot(Snapshot $snapshot): void
6767
{
68-
$this->exportLeaderPrinter($snapshot->toHuman());
68+
$data = $snapshot->toHuman();
69+
$location = new CallLocation($snapshot->originPath, $snapshot->originLine);
70+
unset($data['origin_path'], $data['origin_line']);
71+
$data['call_location'] = Ide::fromEnv()->link($location, null, AnsiStyle::BrightCyan, AnsiStyle::Bold);
72+
73+
$this->exportLeaderPrinter($data);
6974
}
7075

7176
public function exportMetrics(Result|Span|Metrics $metrics): void
@@ -86,10 +91,11 @@ public function exportSpan(Result|Span $span): void
8691
Span::class => $span,
8792
};
8893

94+
$ide = Ide::fromEnv();
8995
$this->exportLeaderPrinter([
9096
'label' => $source->label,
91-
'call_location_start' => Ide::fromEnv()->link($source->range->start, null, AnsiStyle::White),
92-
'call_location_end' => Ide::fromEnv()->link($source->range->end, null, AnsiStyle::White),
97+
'call_location_start' => $ide->link($source->range->start, null, AnsiStyle::BrightCyan, AnsiStyle::Bold),
98+
'call_location_end' => $ide->link($source->range->end, null, AnsiStyle::BrightCyan, AnsiStyle::Bold),
9399
]);
94100
$this->exportMetrics($source->metrics);
95101
}
@@ -211,7 +217,7 @@ public function exportTimeline(Timeline $timeline, ?callable $filter = null): vo
211217
$data = $snapshot->toHuman();
212218
$tableRenderer->addRow([
213219
$data['label'],
214-
$data['origin_path'].':'.$data['origin_line'],
220+
Ide::fromEnv()->link(new CallLocation($data['origin_path'], (int) $data['origin_line']), 'UNKNOWN_PROJECT', AnsiStyle::Bold, AnsiStyle::BrightCyan),
215221
$snapshot->timestamp->format('U.u'),
216222
DurationUnit::format($snapshot->cpuUserTime + $snapshot->cpuSystemTime, 3),
217223
$data['memory_usage'],

0 commit comments

Comments
 (0)