3 unstable releases

0.2.0 Mar 5, 2023
0.1.1 Feb 27, 2023
0.1.0 Feb 27, 2023

#76 in #runtime

32 downloads per month
Used in code-blocks-server

MIT license

11KB
197 lines

tree-sitter-installer

Library for downloading, compiling and loading a tree-sitter parser at runtime.

Example

use tree_sitter_installer::ParserInstaller;

fn main() {
    let text = r#"
struct A {
    a: i32
}

fn main() {}
"#;

    let installer = ParserInstaller {
        download_cmd: "git clone https://github.com/tree-sitter/tree-sitter-rust",
        symbol: b"language",
        name: "tree_sitter_rust",
    };

    let mut parser = installer
        .install_parser(
            &tempfile::tempdir()
                .expect("failed to get tempdir")
                .path()
                .join("rust-parser"),
        )
        .expect("failed to install rust parser");

    let tree = parser.parse(text, None).expect("failed to parse text");

    println!("{}", tree.root_node().to_sexp());
    // prints: (source_file (struct_item name: (type_identifier) body: (field_declaration_list (field_declaration name: (field_identifier) type: (primitive_type)))) (function_item name: (identifier) parameters: (parameters) body: (block)))
}

Dependencies

~2.9–4.5MB
~74K SLoC