highlight-spans 0.2.0

Tree-sitter ObjectScript highlight spans as attr/start/end tuples
Documentation

highlight-spans

highlight-spans parses ObjectScript source with Tree-sitter and returns semantic highlight ranges as (attr_id, start_byte, end_byte) spans plus an attribute table.

What You Get

  • SpanHighlighter for highlighting source bytes or line slices.
  • HighlightResult { attrs, spans } where:
    • attrs maps attr_id -> capture_name
    • spans contains byte ranges tagged by attr_id
  • Grammar variant:
    • ObjectScript (backed by LANGUAGE_OBJECTSCRIPT_PLAYGROUND)

Quick Example

use highlight_spans::{Grammar, SpanHighlighter};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut highlighter = SpanHighlighter::new()?;
    let source = b"set x = 42";
    let result = highlighter.highlight(source, Grammar::ObjectScript)?;

    for span in &result.spans {
        let capture = &result.attrs[span.attr_id].capture_name;
        println!("{capture} {}..{}", span.start_byte, span.end_byte);
    }

    Ok(())
}

Typical Next Step

Use theme-engine to resolve capture_name into styles, then pass styled ranges to a renderer (for example render-ansi).