highlighter

Tool used to highlight text according to a textmate tmLanguage file
https://github.com/ibilon/Highlighter

To install, run:

haxelib install highlighter 0.7.0 

See using Haxelib in Haxelib documentation for more information.

README.md

Highlighter

Tool used to highlight text according to a textmate tmLanguage file.

Output CSS and HTML code.

The built-in themes are from VSCode.

Compilation

Get the required dependencies with:

npm install
haxelib install build.hxml

Then compile with:

haxe build.hxml

Usage as a tool

Get CSS

This will output the css styling necessary to display the highlighted content.

node bin/highlighter.js css [--theme=light|dark|/path/to/file]

By default the light theme is used.

Highlight a file

This will apply syntax highlighting to the whole file and output the result on the console.

node bin/highlighter.js highlight --grammar=/path/to/file --input=stdin|file [--file=/path/to/file] [--theme=light|dark|/path/to/file]

By default the light theme is used. If you use --input=file you need to specify the --file argument.

Usage as a lib

You need to target nodejs, add -lib highlighter to your command.

To create and use a highlighter:

highlighter.Highlighter.loadHighlighter("grammar/someGrammar.tmLanguage", function(h) {
    var s = h.runContent("class C { }"); // Highlight a string

    var s = h.runFile("test/some.file"); // Highlight a file

    var s = h.runStdin(); // Highlight the content of stdin, if you pipe a file
});

To get the css rules for the style you are using:

highlighter.Highlighter.loadHighlighter("grammar/someGrammar.tmLanguage", function(h) {
    var s = h.runCss();
});

Patching will parse a html file, or a folder of it, and apply syntax highlighting to the following blocks:

<pre>
    <code class="lang">
    </code>
</pre>
var getLang = function (classText) return classText.substr(12); // To filter class="prettyprint haxe" into "haxe"
highlighter.Highlighter.loadHighlighters(["haxe" => "grammars/haxe.tmLanguage"], function(grammars) {
    var missingGrammars = Highlighter.patchFile("some.file", grammars, getLang); // Patch a single file

    var recursive = true;
    var missingGrammars = Highlighter.patchDirectory("/some/path", grammars, getLang, recursive); // Patch a folder recursively (or not).
})

License

MIT

Contributors
_ibilon
Version
0.7.0
Published
8 months ago
Dependencies
License
MIT

All libraries are free

Every month, more than a thousand developers use Haxelib to find, share, and reuse code — and assemble it in powerful new ways. Enjoy Haxe; It is great!

Explore Haxe

Haxe Manual

Haxe Code Cookbook

Haxe API documentation

You can try Haxe in the browser! try.haxe.org

Join us on GitHub!

Haxe is being developed on GitHub. Feel free to contribute or report issues to our projects.

Haxe on GitHub