speed-highlight / core

A lightweight syntax highlighter written in JavaScript
https://speed-highlight.github.io/core/examples/
Creative Commons Zero v1.0 Universal
276 stars 15 forks source link

[FEATURE] Sync version #29

Open amatiasq opened 2 years ago

amatiasq commented 2 years ago

Is your feature request related to a problem? Please describe. Trying to use this with Deno's Markdown. It doesn't work because this library is asynchronous and that library doesn't accept an asynchronous syntax highlighter.

Describe the solution you'd like Expose highlightTextSync for example?

Describe alternatives you've considered Not much I can do, this library always returns a promise and the markdown library doesn't know how to handle it.

Reproduction script

import { Marked } from 'https://deno.land/x/markdown@v2.0.0/mod.ts';
import { highlightText } from 'https://deno.land/x/speed_highlight_js@1.1.7/src/index.js';

Marked.setOptions({
  // prints `[object Promise]`
  highlight: (code, lang) => highlightText(code, lang),
});

I saw the only reason this is asynchronous is because tokenize imports the language if not loaded yet. Maybe I can import the languages in advance and pass them down to tokenizeSync?

nvlled commented 1 year ago

Weirdly enough, I encountered the same exact problem you have and thought of the same solution you had. Is this being actively worked on? I can start working on this if not.

matubu commented 1 year ago

Thank you for your interest in this project! Unfortunately, a sync version of the highlighting functions is not currently under active development. However, you're welcome to fork the project and develop your own version. If you have any questions or need help getting started, let me know.