phpexperts / tempest-highlight-api
A light-weight, dockerized API server for tempest/highlight.
Installs: 1
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 0
Open Issues: 0
Type:project
Requires
- php: ^8.3
- ext-json: *
- pecee/simple-router: ^5.4
- phpexperts/dockerize: ^9.1
- phpexperts/rest-speaker: ^2.6
- tempest/highlight: ^1.0
Requires (Dev)
- monolog/monolog: ^2.9
- octoper/cuzzle: ^3.1
- symfony/var-dumper: ^7.0
README
This code is hosted at https://highlight.phpexperts.pro/
License: MIT
https://github.com/PHPExpertsInc/highlight.phpexperts.pro/
API Routes
POST: /highlight
{
"lang": "language",
"text": "JSON-encoded text"
}
Output: text/html
Installation Instructions
Via Composer + Docker:
composer create-project phpexperts/tempest-highlight-api
cd tempest-highlight-api
# Edit the desired HTTP port in `docker-compose.yml`.
docker compose up -d
Via Git + Nginx:
Running natively requires PHP v8.3 or higher with ext-json.
sudo -s
cd /var/www
git clone https://github.com/PHPExpertsInc/highlight.phpexperts.pro
cd highlight.phpexperts.pro/
# Add a new virtualhost:
cp docker/web/sites/001_default.conf /etc/nginx/sites-available/999_my-highlighter.conf
# Edit it and add a `server_name my.url;` directive.
systemctl restart nginx
Clients
Pure JavaScript Client
<link rel="stylesheet" href="https://highlight.phpexperts.pro/css/highlight-tempest.css" /> <code lang="JavaScript"> console.log("Hello, World!"); </code> <script src="https://highlight.phpexperts.pro/js/highlight.min.js" defer="defer"></script>
PHP Client
First, composer require phpexperts/rest-speaker
. Then:
Copy [src/client.php] or copy this code directly.
use PHPExperts\RESTSpeaker\NoAuth; use PHPExperts\RESTSpeaker\RESTSpeaker; $url = 'https://highlight.phpexperts.pro'; $highlighter = new class(new NoAuth(), $url) extends RESTSpeaker { public function highlight(string $language, string $text): string { $result = $this->post('/highlight', [ 'lang' => $language, 'text' => $text ]); if ($this->getLastStatusCode() === 400) { throw new \RuntimeException($result); } return $result; } }; echo $highlighter->highlight('PHP', 'echo "Hello, World!\n";');