Server Side Highlight

Server Side Highlight club-1/flarum-ext-server-side-highlight

Server-side code highlighting with cached results.

CLUB1 Server Side Highlight

License Latest Stable Version Total Downloads Coverage Build Status

A Flarum extension. Server-side code highlighting with cached results.

banner banner

For each code block of the posts, a hash is computed while parsing them, then on render the code highlighting is done in the backend once, and stored in the cache for future renderings.

It provides the following advantages:

  1. The highlighting is done on the server so it is not up to the clients to do it.
  2. The server uses the cache to save highlighted blocks to only do the processing once.
  3. It works without any JS so even on the worst web browser the highlight will be there and there is no delay before the highlighting is applied.
  4. The theme adapts itself to the "dark mode" setting of Flarum.
  5. It works even with BBCode extension disabled.
  6. Admins can choose the highlight theme for both "Light" and "Dark" Flarum variants.
  7. Admins can download highlight themes with highlight:download Flarum console command.
  8. It is compatible with fof/nightmode by switching the highlight theme accordingly.

Client-side highlighting is still used, but only for the post preview.

Installation

Install with composer:

composer require club-1/flarum-ext-server-side-highlight:"*"

Recommendation

This extension alone does not apply the formatting changes to previously posted comments. I you want to reparse all the comments posts of the database it is recommended to install and enable the club-1/flarum-ext-chore-commands extension and use its chore:reparse command.

Updating

composer update club-1/flarum-ext-server-side-highlight:"*"
php flarum migrate
php flarum cache:clear
php flarum assets:publish

Acknowledgement

This extension is based on the following libraries:

Links

Versions

  • Version v1.4.0.

    Likely works with Flarum v1.8.9.

    Unlikely to work with Flarum v2.0.0-beta.1.

  • 10 additional versions.
  • Extension created.