Phiki
Phiki adalah paket PHP untuk highlighting sintaks kode. Paket ini dirancang sebagai pengganti highlighter sintaks lain seperti Shiki dan Highlight.php. Fitur utama Phiki adalah tanpa ketergantungan pihak ketiga, sehingga mudah diintegrasikan ke dalam proyek PHP apa pun.
Gambaran umum
Fungsi inti Phiki melibatkan highlighting kode menggunakan file grammar TextMate dan tema Visual Studio Code. Pendekatan ini bertujuan mencapai tingkat akurasi highlighting yang tinggi, membuat kode terlihat seolah-olah disorot di editor kode pilihan.
Cara kerja
Phiki memproses kode melalui pipeline internal lima langkah:
-
Tokenisasi
Phiki memulai dengan melakukan tokenisasi pada kode menggunakan file grammar TextMate. Proses ini memecah kode menjadi potongan teks kecil, masing-masing dengan informasi detail tentang “scope”. Scope adalah string yang dipisahkan oleh titik yang mendeskripsikan jenis teks, misalnyavariable.other.phpuntuk sebuah variabel PHP. -
Highlighting
Setelah tokenisasi, Phiki menyorot token menggunakan tema Visual Studio Code yang dipilih. Scope dari setiap token dicocokkan dengan aturan dalam file tema. Aturan ini mendefinisikan warna latar belakang, warna teks, dan gaya font untuk token tersebut. Token kemudian diubah menjadi objekHighlightedToken, yang berisi token mentah sekaligus informasi styling-nya. -
Strukturisasi
Setelah highlighting, Phiki membuat struktur mirip AST (Abstract Syntax Tree-like) untuk merepresentasikan output HTML yang diinginkan. Struktur perantara ini memudahkan manipulasi output akhir tanpa operasi string yang rumit. -
Transformasi
Jika diperlukan, Phiki dapat mentransformasi struktur perantara ini. Tahap ini biasanya digunakan ekstensi untuk memodifikasi AST dan menambahkan fitur seperti penyorotan baris atau nama kelas kustom. -
Rendering
Terakhir, Phiki mengubah AST yang sudah lengkap menjadi HTML. HTML ini kemudian dapat langsung ditampilkan di browser, dimasukkan ke dalam file template, atau disimpan ke disk.
Mengapa dibuat
Phiki dikembangkan untuk mengatasi kekurangan yang ditemukan pada solusi highlighting sintaks yang sudah ada.
-
Highlight.php
Meskipun cukup cepat, Highlight.php (port dari library populer highlight.js) memiliki kualitas highlighting yang buruk. -
Shiki
Shiki menghasilkan output yang bagus namun lambat dijalankan dari aplikasi PHP karena membutuhkan proses Node.js untuk melakukan highlighting. Hal ini membuatnya tidak praktis untuk aplikasi dengan render langsung.
Phiki bertujuan menyelesaikan masalah ini dengan menawarkan implementasi murni PHP dari tokenizer TextMate dan highlighter Visual Studio Code. Ini memberikan kualitas highlighting yang tinggi tanpa perlu ketergantungan atau layanan pihak ketiga. Pembuatnya juga menyebutkan ketertarikan pribadi dalam membangun serta mendorong batas kemungkinan dengan PHP.
Konsep utama dan fitur
-
Grammar TextMate
Digunakan untuk melakukan tokenisasi kode dan menentukan “scope” dari berbagai elemen teks. -
Tema Visual Studio Code
Digunakan untuk menerapkan gaya (warna, font) pada kode yang sudah ditokenisasi berdasarkan scope-nya. -
Tanpa ketergantungan pihak ketiga
Memudahkan integrasi ke proyek PHP apa pun.
Integrasi
Phiki mendukung integrasi dengan berbagai platform dan alat, termasuk:
- CommonMark
- Laravel
- Statamic