Pāriet uz saturu

ShikiPHP

Tīrs PHP sintakses izcēlājs, Shiki ports. Veidojiet koda bloku stilu ar VS Code motīviem un TextMate gramatikām bez Node; izvade sakrīt ar Shiki 3.23.0 visos 214 etalontesta scenārijos.

Terminālis
composer require shikiphp/shikiphp

Jaunākais laidiens v0.1.0 MIT PHP 8.2+, ext-json, ext-mbstring

Praksē

Iezīmējiet fragmentu no PHP veidnes vai būvēšanas skripta un izdrukājiet tā atgriezto HTML.

Viens izsaukums katram koda blokam

Shikiphp::codeToHtml saņem kodu, valodas ID un tēmas ID. Tas atgriež pilnu pre bloku ar iekļautām krāsām, tāpēc tas tiek attēlots bez papildu stilu lapas.

Padodiet themes karti theme vietā, un tas pats bloks ar CSS mainīgajiem ietvers gaišās un tumšās krāsas.

PHP
use Shikiphp\Shikiphp;

echo Shikiphp::codeToHtml(<<<'PHP'
<?php
function greet(string $name): string {
    return "Hello, {$name}!";
}
PHP, [
    'lang'  => 'php',
    'theme' => 'github-dark',
]);

Īstas TextMate gramatikas

Uzticams vscode-textmate ports: iegultās valodas, injekcijas un ligzdotas repozitorijas. Tās pašas gramatikas, ar ko tokenizē Shiki un VS Code.

VS Code motīvi

Tvēruma atlasītāja specifiskums un vecāktvēruma atbilstība, pārnesti no vscode-textmate. Viens motīvs vai gaišais/tumšais pāris, izmantojot CSS mainīgos.

Shiki-identiska izvade

214 etalona scenāriji, kas aptver 167 no 253 iekļautajām gramatikām, ANSI un visas 65 tēmas, sakrīt ar Shiki 3.23.0 HTML izvadi ar JavaScript regulāro izteiksmju dzinēju, izņemot sākuma un beigu baltstarpas (arī tabulāciju un rindu pārnesumus).

Tīrs PHP regulāro izteiksmju dzinējs

Komplektā iekļauts JavaScript RegExp dzinējs no inline0/phasis, ko darbina oniguruma-to-es ports. Shiki JavaScript regulāro izteiksmju dzinējs izmanto to pašu Oniguruma ceļu uz RegExp.

Pārveidotāji

Visi Shiki āķi (preprocess, tokens, root, pre, code, line, span, postprocess), kā arī iebūvētie notācijas, meta un baltstarpju pārveidotāji.

Pilns komplekts

Komplektā iekļauta katra tm-grammars valoda (235 un 18 palīggramatikas) un tm-themes tēma (65). Iekļauta ANSI termināļa izvade, dekorācijas un colorReplacements.

CLI

Izcelt faila sintaksi HTML formātā vai uzskaitīt iekļautās valodas un tēmas var tieši komandrindā ar bin/shikiphp.

Bez Node

Darbojas ar PHP 8.2+ tikai ar ext-json un ext-mbstring. Nav Node izpildvides, vietējās Oniguruma saistvielas vai ārēju komandu izsaukšanas.

Kāpēc ShikiPHP

Darbojas tur, kur darbojas jūsu PHP

Izcēlšana notiek PHP procesā, neizsaucot Node no čaulas un neizsaucot mitinātu API. Tas ir piemērots Laravel, WordPress vai statiskas vietnes būvēšanas posmam.

Izvade, ko var kešot

Tas pats kods ar tām pašām opcijām vienmēr rada to pašu HTML. Veiciet izcelšanu būvēšanas laikā vai kešojiet HTML pēc koda un opcijām, līdz mainās avots.

Viens bloks gaišajam un tumšajam režīmam

Tēmu karte ieraksta otrās tēmas krāsas kā CSS mainīgos tajā pašā marķējumā, un dažas CSS rindas pārslēdz to. Opcija defaultColor izvēlas, kuras tēmas krāsas iekļaut.

Ierobežojumi neuzticamai ievadei

Regulāro izteiksmju dzinējs iegaumē neveiksmīgus mēģinājumus un aizsargā pret ReDoS, tāpēc patoloģisks raksts palēninās, nevis iestrēgst. Opcija tokenizeMaxLineLength izvada pārāk garas rindas kā vienu vienkāršu tokenu.

Salīdzinājums ar

Citi veidi, kā izcelt kodu PHP vietnei, un ar ko atšķiras ShikiPHP.

ShikiPHP salīdzinājumā ar citiem rīkiem
Shiki PiemērotsEtalonimplementācija JavaScript vidē. Tā darbojas jebkurā mūsdienīgā JavaScript izpildvidē bez Node.js API, ielādē gramatikas un tēmas pēc pieprasījuma un nodrošina TypeScript Twoslash integrācijas. Atšķirība no ShikiPHPShikiPHP pārnes šo apstrādes plūsmu uz PHP lapām, ko renderē PHP serverī. Etalonuzdevumu ietvars salīdzina tā HTML ar Shiki 3.23.0, kamēr Shiki galvenā zara versija ir pārgājusi uz v4.
Phiki PiemērotsPHP sintakses izcēlējs, kas arī izmanto TextMate gramatikas un VS Code tēmas. Komplektā iekļauts league/commonmark paplašinājums, kas darbojas ar Laravel Str::markdown, termināļa izvadi un komandrindas bināro failu. Atšķirība no ShikiPHPPhiki raksturo savu tokenizētāju kā iedvesmotu no vscode-textmate, bet ne kā tā precīzu tulkojumu. ShikiPHP pārnes vscode-textmate un oniguruma-to-es un HTML izvadi salīdzina ar Shiki izvadi 214 orākula scenārijos.
highlight.php PiemērotsServera puses PHP ports highlight.js, kas atbalsta 185 valodas ar oriģinālajām valodu un stilu definīcijām un var automātiski noteikt valodu. Atšķirība no ShikiPHPShikiPHP tokenizē ar TextMate gramatikām un iekrāso ar VS Code tēmām — tiem pašiem failiem, ko izmanto Shiki, un katrā izsaukumā jānorāda valoda.
Torchlight PiemērotsAr VS Code saderīgs izcelšanas pakalpojums. Tas ir HTTP API ar komentāru anotācijām izcēlumiem, fokusam un atšķirībām, un tam ir pirmās puses klienti priekš Laravel, CommonMark, Statamic un citām tehnoloģiju kopām. Atšķirība no ShikiPHPShikiPHP darbojas jūsu PHP procesā bez mitināta API. Tā iebūvētie notācijas pārveidotāji nolasa līdzīgus komentārus izceltām, fokusētām un atšķirību rindām.

Jautājumi un atbildes

Īsas atbildes no ShikiPHP dokumentācijas.

Sāciet ar darba sākšanas pamācību, pēc tam pievienojiet pārveidotājus, pielāgotas gramatikas vai ANSI izvadi, kad tas vajadzīgs jūsu lapām.