Μετάβαση στο περιεχόμενο

Ξεκινώντας

Εγκατάσταση

Κέλυφος
composer require shikiphp/shikiphp

Το shikiphp απαιτεί PHP 8.2 ή νεότερη έκδοση με ext-json και ext-mbstring — και τα δύο είναι ενεργοποιημένα σε σχεδόν κάθε έκδοση PHP. Δεν απαιτείται τίποτε άλλο: ούτε Node, ούτε εγγενής σύνδεση Oniguruma, ούτε πρόσθετες επεκτάσεις.

Το πρώτο σας μπλοκ

Το στατικό facade Shikiphp είναι ο πιο γρήγορος τρόπος για να ξεκινήσετε. Περάστε τον κώδικα, ένα id γλώσσας και ένα id θέματος:

PHP
use Shikiphp\Shikiphp;

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

echo $html;

Το codeToHtml επιστρέφει ένα πλήρες, αυτομορφοποιημένο μπλοκ <pre class="shiki …">. Τα χρώματα προσκηνίου και φόντου γράφονται inline στο <pre>, ώστε να αποδίδεται σωστά χωρίς πρόσθετο stylesheet.

Διπλά θέματα (φωτεινό και σκοτεινό)

Αντί για ένα μόνο theme, περάστε έναν χάρτη themes. Το shikiphp εκπέμπει μεταβλητές CSS (όπως το Shiki), ώστε ένα μπλοκ που έχει αποδοθεί να προσαρμόζεται στη φωτεινή και στη σκοτεινή λειτουργία:

PHP
use Shikiphp\Shikiphp;

$code = 'const answer: number = 42';

echo Shikiphp::codeToHtml($code, [
    'lang'   => 'ts',
    'themes' => ['light' => 'github-light', 'dark' => 'github-dark'],
]);

Από προεπιλογή, τα χρώματα του θέματος light χρησιμοποιούνται inline και το dark διατίθεται μέσω μεταβλητών --shiki-dark. Ενεργοποιήστε το σκοτεινό θέμα με λίγο CSS — το ίδιο απόσπασμα κώδικα που τεκμηριώνει το Shiki:

CSS
html.dark .shiki,
html.dark .shiki span {
  color: var(--shiki-dark) !important;
  background-color: var(--shiki-dark-bg) !important;
  /* and font styles */
  font-style: var(--shiki-dark-font-style) !important;
  font-weight: var(--shiki-dark-font-weight) !important;
  text-decoration: var(--shiki-dark-text-decoration) !important;
}

Μπορείτε να επιλέξετε ποιο θέμα θα είναι προεπιλεγμένο inline με την επιλογή defaultColor ή να ορίσετε το defaultColor: false ώστε να εκπέμπονται μόνο μεταβλητές.

Id γλωσσών και ψευδώνυμα

Οι γλώσσες αναφέρονται με το id ή το ψευδώνυμο Shiki — php, ts, js, rust, python, html κ.ο.κ. Δείτε τις Γλώσσες για να μάθετε πώς να εμφανίσετε όλα όσα περιλαμβάνονται και τα Θέματα για τα id θεμάτων.

Επαναχρησιμοποίηση του εργαλείου επισήμανσης

Το facade δημιουργεί και αποθηκεύει προσωρινά ένα ενσωματωμένο Highlighter μόνο όταν χρειάζεται, ώστε οι επαναλαμβανόμενες κλήσεις στο Shikiphp::codeToHtml να επαναχρησιμοποιούν τις ίδιες κρυφές μνήμες γραμματικών και θεμάτων. Αν χρειάζεστε το πληρέστερο API (έξοδο HAST, προσαρμοσμένες γραμματικές, πλέγματα token), αποκτήστε απευθείας την παρουσία:

PHP
use Shikiphp\Shikiphp;

$code = 'fn main() {}';

$highlighter = Shikiphp::highlighter();
$hast = $highlighter->codeToHast($code, ['lang' => 'rust', 'theme' => 'nord']);

Δείτε το API για την πλήρη διεπαφή.