ANSI-väljund
Seadke lang väärtuseks 'ansi', et tõsta esile terminaliväljund — ANSI-paokoode sisaldav tekst — selle asemel, et seda grammatikaga märgendada. shikiphp parsib paokoodid ja värvib teksti teema ANSI-paletiga. See on Shiki-i lang: 'ansi' märgendaja teisendus ning neli võrdlusstsenaariumi kontrollivad selle HTML-i Shiki-i 3.23.0 vastu.
use Shikiphp\Shikiphp;
echo Shikiphp::codeToHtml("\e[31merror\e[0m: something broke", [
'lang' => 'ansi',
'theme' => 'github-dark',
]);
See on loomulik viis kuvada algsete värvidega jäädvustatud CLI väljundit — testikäivitajate, järgu git väljundit. Paokoodid eemaldatakse väljundist; alles jääb ainult tekst, mis on ümbritsetud värviliste elementidega.
Pange tähele jutumärkides PHP stringi: "\e" on paomärk. Kui kuvate protsessist jäädvustatud väljundit (näiteks shell_exec või proc_open abil), on paomärgid stringis juba olemas.
Mida see mõistab
Märgendi tõmmits loeb SGR-jadasid (Select Graphic Rendition), ESC [ … m, milles võib olla suvaline arv eraldajaga ; eraldatud koode:
| Koodid | Mõju |
|---|---|
0 |
lähtestab kõik värvid ja atribuudid |
1, 3, 4, 9 |
paks kiri, kaldkiri, allajoonimine, läbikriipsutus |
2 |
tuhm: esiplaan kuvatakse poole läbipaistmatusega |
7 |
pööratud: esi- ja taustavärv vahetavad koha |
21, 23, 24, 27, 29 |
lülitab vastava atribuudi välja |
22 |
tavaline intensiivsus: lülitab tuhmuse ja paksu kirja välja |
30–37, 90–97 |
esiplaan: 8 standardvärvi ja 8 heledat värvi |
40–47, 100–107 |
taust: 8 standardvärvi ja 8 heledat värvi |
38;5;n, 48;5;n |
esi- või taustavärv 256-värvi tabelist |
38;2;r;g;b, 48;2;r;g;b |
24-bitine tõevärviline esi- või taustavärv |
39, 49 |
vaikimisi esi- või taustavärv |
Peidetud (8) ja ülakriips (53) parsitakse, kuid need väljundit ei muuda; muud koodid eiratakse. Vormingud säilivad reavahetuste üle kuni nende lähtestamiseni, nagu terminalis.
Värvid
16 nimega värvi pärinevad teema terminal.ansi* värvidest (terminal.ansiRed, terminal.ansiBrightBlue jne). Kui teema mõnd värvi ei määra, kasutatakse VS Code vaikepaletti (punase jaoks #cd3131, sinise jaoks #2472C8 jne). Värvimääranguta tekst kasutab teema esiplaani ja ploki taust teema taustavärvi, nagu grammatikapõhisel esiletõstmisel. 256-värvi tabelis on kirjed 0–15 samad 16 nimega värvi; kirjed 16–255 (6×6×6 värvikuup ja halltoonide astmestik) ning tõevärviväärtused ei sõltu teemast.
colorReplacements kehtivad ka ANSI-värvide kohta.
Kaks teemat
ANSI järgib themes vastendust nagu grammatikapõhine esiletõstminegi, väljastades vaikeväärtuseta teemade jaoks CSS-muutuja variante:
use Shikiphp\Shikiphp;
$log = "\e[32mPASS\e[0m tests/Unit\n\e[31mFAIL\e[0m tests/Integration";
echo Shikiphp::codeToHtml($log, [
'lang' => 'ansi',
'themes' => ['light' => 'github-light', 'dark' => 'github-dark'],
]);
Iga nimega värv määratakse iga teema enda paleti põhjal, seega võivad heleda ja tumeda teema punased värvid erineda.
Grammatikaseisund puudub
Kuna ANSI ei kasuta TextMate grammatikat, pole säilitatavat grammatikaseisundit. getLastGrammarState annab vea väärtuse lang: 'ansi' korral ning codeToTokensResult tagastab null grammarState.