ShikiPHP
Puhas PHP süntaksi esiletõstja, Shiki teisendus. Vorminda koodiplokke VS Code teemade ja TextMate grammatikatega ilma Node'ita; väljund vastab 214 kontrolljuhtude lõikes Shiki 3.23.0-le.
composer require shikiphp/shikiphpViimane väljalase v0.1.0 MIT PHP 8.2+, ext-json, ext-mbstring
use Shikiphp\Shikiphp;
echo Shikiphp::codeToHtml("\e[31merror\e[0m: something broke", [
'lang' => 'ansi',
'theme' => 'github-dark',
]);Praktikas
Tõsta esile koodinäide PHP mallist või ehitusskriptist ja prindi tagastatav HTML.
Üks väljakutse koodiploki kohta
Shikiphp::codeToHtml võtab vastu koodi, keele ID ja teema ID. See tagastab täieliku pre ploki, mille värvid on tekstisiseselt kirjas, nii et see kuvatakse ilma täiendava laaditabelita.
Anna theme asemel edasi kaart themes ja sama plokk kasutab heledate ning tumedate värvide jaoks CSS muutujaid.
use Shikiphp\Shikiphp;
echo Shikiphp::codeToHtml(<<<'PHP'
<?php
function greet(string $name): string {
return "Hello, {$name}!";
}
PHP, [
'lang' => 'php',
'theme' => 'github-dark',
]);use Shikiphp\Shikiphp;
$code = 'const answer: number = 42';
echo Shikiphp::codeToHtml($code, [
'lang' => 'ts',
'themes' => ['light' => 'github-light', 'dark' => 'github-dark'],
]);Tõelised TextMate grammatikad
vscode-textmate ustav teisendus: põimitud keeled, sisestused ja pesastatud hoidlad. Samad grammatikad, millega Shiki ja VS Code märgendavad.
VS Code teemad
Skoobivalija spetsiifilisus ja ülemskoobi sobitamine on üle toodud teegist vscode-textmate. Üks teema või hele ja tume teema CSS-muutujate abil.
Shiki-ga identne väljund
214 kontrolljuhtu, mis hõlmavad 167 253 komplektis olevast grammatikast, ANSI-t ja kõiki 65 teemat, vastavad HTML väljundile rakenduses Shiki 3.23.0 koos selle JavaScript regulaaravaldiste mootoriga, välja arvatud algus- ja lõputühikud.
Puhas PHP regulaaravaldiste mootor
Tarnitav JavaScript RegExp-mootor allikast inline0/phasis, mille sisendiks on oniguruma-to-es teisendus. Shiki JavaScript regulaaravaldiste mootor kasutab sama Oniguruma-st RegExp-iks teisendamise rada.
Teisendajad
Kõik Shiki konksud (preprocess, tokens, root, pre, code, line, span, postprocess) ning sisseehitatud märgistus-, meta- ja tühimärgiteisendajad.
Täielik komplekt
Kaasas on kõik tm-grammars keeled (235 ja 18 abigrammatikat) ning tm-themes teemad (65). Komplektis on ka ANSI-terminaliväljund, kaunistused ja colorReplacements.
CLI
Tõsta faili süntaks esile HTML-vormingus või loetle käsurealt kaasasolevad keeled ja teemad käsuga bin/shikiphp.
Node'i pole vaja
Töötab PHP 8.2+ versiooniga ning vajab ainult laiendusi ext-json ja ext-mbstring. Node'i käituskeskkonda ega natiivset Oniguruma sidumist pole vaja ning välist käsku ei käivitata.
Miks ShikiPHP
Töötab seal, kus töötab sinu PHP
Esiletõstmine toimub PHP protsessis, ilma Node'i väljakutse või majutatud API kasutamiseta. See sobib Laravel, WordPress või staatilise saidi ehitusetappi.
Väljund, mida saab vahemällu salvestada
Sama kood samade valikutega annab alati sama HTML. Tõsta esile ehitamise ajal või salvesta HTML vahemällu koodi ja valikute alusel kuni lähtekoodi muutumiseni.
Üks plokk heleda ja tumeda teema jaoks
Teemade kaart kirjutab teise teema samasse märgistusse CSS muutujatena ja paar rida CSS-i vahetavad teemat. Valik defaultColor määrab tekstisiseselt kirjutatava teema.
Piirangud ebausaldusväärsele sisendile
Regulaaravaldiste mootor jätab nurjunud katsed meelde ja kaitseb ReDoS-i eest, nii et patoloogilise mustri korral töö aeglustub, mitte ei jää rippuma. Valik tokenizeMaxLineLength väljastab liiga pikad read ühe lihttekstina märgendina.
Võrdlus
Muud viisid koodi esiletõstmiseks PHP saidil ja mille poolest ShikiPHP erineb.
| Tööriist | Sobib hästi | Erinevus võrreldes ShikiPHP-ga |
|---|---|---|
| Shiki | Sobib hästiViiterealisatsioon, loodud keeles JavaScript. See töötab igas tänapäevases JavaScript käituskeskkonnas ilma Node.js API-deta, laadib grammatikad ja teemad vajaduse korral ning sellel on TypeScript Twoslash-integratsioonid. | Erinevus võrreldes ShikiPHP-gaShikiPHP teisendab selle torujuhtme PHP-ks, et renderdada lehti PHP serveris. Selle kontrollraamistik võrdleb HTML tulemust rakenduse Shiki 3.23.0-ga, samal ajal kui Shiki põhiharu on edasi liikunud versioonile v4. |
| Phiki | Sobib hästiPHP esiletõstja, mis kasutab samuti TextMate grammatikaid ja VS Code teemasid. Kaasas on league/commonmarki laiendus, mis töötab koos Laravel Str::markdowniga, terminaliväljund ja käsurea binaarfail. | Erinevus võrreldes ShikiPHP-gaPhiki kirjeldab oma märgendajat kui süsteemist vscode-textmate inspireeritut, kuid mitte üks ühele tõlget. ShikiPHP teisendab vscode-textmate ja oniguruma-to-es ning võrdleb oma HTML väljundit Shiki omaga 214 kontrolljuhtumis. |
| highlight.php | Sobib hästiServeripoolne PHP teisendus süsteemist highlight.js, mis toetab 185 keeli koos algsete keele- ja stiilidefinitsioonidega ning suudab keele automaatselt tuvastada. | Erinevus võrreldes ShikiPHP-gaShikiPHP märgendab koodi TextMate grammatikatega ja värvib VS Code teemadega, kasutades samu faile nagu Shiki; iga väljakutse puhul tuleb keel nimetada. |
| Torchlight | Sobib hästiEsiletõstmisteenus, mis ühildub VS Code-ga. See on HTTP API koos kommentaarimärkustega esiletõstmiste, fookuse ja erinevuste jaoks ning sellel on ametlikud kliendid Laravel, CommonMarki, Statamici ja muude platvormide jaoks. | Erinevus võrreldes ShikiPHP-gaShikiPHP töötab sinu PHP protsessis ilma majutatud API-ta. Selle sisseehitatud märgistusteisendajad loevad võrreldavaid kommentaare esiletõstetud, fookuses ja erinevustega ridade kohta. |
Allikad, märgitud
Küsimused ja vastused
Lühikesed vastused ShikiPHP dokumentatsioonist.
Anna edasi kaart themes, milles on heleda ja tumeda teema kirjed. Heledad värvid kirjutatakse tekstisiseselt ja tumedad CSS muutujatena; neid rakendab lühike html.dark-ile skoobitud .shiki reegel. Määra defaultColor väärtuseks false, et väljastada ainult muutujad.
Kõik grammatikad süsteemist tm-grammars 1.31.15, kokku 235 keelt ning 18 abigrammatikat, ja kõik 65 teemat süsteemist tm-themes. ID-de loendamiseks käivita vendor/bin/shikiphp langs või vendor/bin/shikiphp themes, või kutsu esiletõstjal välja bundledLanguages() ja bundledThemes().
Jah. Dekodeeri .tmLanguage.json fail ja registreeri see funktsiooniga loadGrammar, määrates ID ja soovi korral aliased; teema registreerimiseks kasuta funktsiooni loadTheme ja VS Code. Registreeri esmalt kõik sellesse kaasatud või põimitud grammatikad.
Regulaaravaldiste mootor jätab nurjunud katsed meelde ja kaitseb ReDoS-i eest, nii et patoloogilise mustri korral töö aeglustub, mitte ei jää rippuma. Määra tokenizeMaxLineLength, et väljastada ühe lihttekstina märgendina iga rida, mis on selle pikkune või pikem.
Dokumentatsioon ei soovita seda. Staatiliste lehtede puhul tõsta kood esile ehitamise ajal või salvesta renderdatud HTML koodi ja valikute alusel vahemällu. Protsessi sees kasuta sama esiletõstjat uuesti; Shikiphp fassaad teeb seda sinu eest.
Kontrollraamistik võrdleb ShikiPHP HTML-i süsteemi Shiki 3.23.0-ga, kasutades Shiki JavaScript regulaaravaldiste mootorit. Selle 214 kontrolljuhtu hõlmavad 167 253 komplektis olevast grammatikast, ANSI-t ja kõiki 65 teemat; valikuid ja sisseehitatud teisendajaid kontrollitakse eraldi pariteeditestidega.
Alusta alustamisjuhendist ning lisa seejärel teisendajaid, kohandatud grammatikaid või ANSI-väljund, kui su lehed neid vajavad.