Major changes: - New ThemeManager with Twig templating and SCSS compilation - Dynamic themes system (themes/default, themes/demo) - LogManager with SQLite storage and syslog forwarding - RequestLogger with static helper methods - Admin UI overhaul (Bootstrap 5, dark mode) - Admin config page with logging and theme settings - Admin logs page with filters and search - Removed legacy Mustache templates - Removed test plugin and theme - Composer dependencies: Twig, scssphp, CommonMark, MaxMind GeoIP
48 lines
1.1 KiB
PHP
48 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace SourceSpan;
|
|
|
|
use League\Uri\Contracts\UriInterface;
|
|
|
|
interface SourceLocation
|
|
{
|
|
public function getOffset(): int;
|
|
|
|
/**
|
|
* The 0-based line of that location
|
|
*/
|
|
public function getLine(): int;
|
|
|
|
/**
|
|
* The 0-based column of that location
|
|
*/
|
|
public function getColumn(): int;
|
|
|
|
public function getSourceUrl(): ?UriInterface;
|
|
|
|
/**
|
|
* Returns the distance in characters between $this and $other.
|
|
*
|
|
* This always returns a non-negative value.
|
|
*
|
|
* @return int<0, max>
|
|
*/
|
|
public function distance(SourceLocation $other): int;
|
|
|
|
/**
|
|
* Returns a span that covers only a single point: this location.
|
|
*/
|
|
public function pointSpan(): SourceSpan;
|
|
|
|
/**
|
|
* Compares two locations.
|
|
*
|
|
* It returns a negative integer if $this is ordered before $other,
|
|
* a positive integer if $this is ordered after $other,
|
|
* and zero if $this and $other are ordered together.
|
|
*
|
|
* $other must have the same source URL as $this.
|
|
*/
|
|
public function compareTo(SourceLocation $other): int;
|
|
}
|