Phiki comes with a set of built-in grammars for popular programming languages, but you can also create and use your own custom grammars. This is particularly useful if you’re working with a language that isn’t supported out of the box.
To learn more about writing custom TextMate grammars, check out the Visual Studio Code documentation on syntax highlighting.

Local files

If your grammar is stored in a local JSON file, you can load it by passing the slug of the grammar and file path to the grammar() method.
use Phiki\Phiki;

$phiki = (new Phiki)
    ->grammar('my-language', '/path/to/my-language.json');

Runtime grammars

You can also define grammars at runtime by providing a grammar definition as an associative array to the Grammar::parse() method.
use Phiki\Phiki;
use Phiki\Grammar\Grammar;

$phiki = (new Phiki)
    ->grammar('my-language', Grammar::parse([
        'name' => 'my-language',
        'scopeName' => 'source.my-language',
        'patterns' => [
            // ...
        ],
        'repository' => [
            // ...
        ]
    ]));

Usage

To use your custom grammar, simply pass the slug you defined when registering the grammar instead of a Phiki\Grammar\Grammar enum value.
$html = (new Phiki)
    ->grammar('my-language', '/path/to/my-language.json')
    ->codeToHtml('Your code here...', 'my-language', Theme::GithubLight)
    ->toString();