treesitter-types-json 0.1.1

Pre-generated strongly-typed AST types for JSON (tree-sitter-json)
Documentation

Strongly-typed AST types for JSON, auto-generated from tree-sitter-json's node-types.json.

This crate is generated by treesitter-types and is automatically kept up to date when a new version of the grammar crate is released.

These types have been tested by parsing the SchemaStore source code.

See the Tree-sitter project for more information about the underlying parser framework.

Example

use treesitter_types_json::*;

// A small JSON document.
let src = b"\
{
    \"name\": \"hello\",
    \"version\": 42
}
";

// Parse the source with tree-sitter and convert into typed AST.
let mut parser = tree_sitter::Parser::new();
parser.set_language(&tree_sitter_json::LANGUAGE.into()).unwrap();
let tree = parser.parse(src, None).unwrap();
let document = Document::from_node(tree.root_node(), src).unwrap();

// The document contains one top-level value: a JSON object.
assert_eq!(document.children.len(), 1);
let Value::Object(object) = &document.children[0] else {
    panic!("expected an object");
};

// The object has two key-value pairs.
assert_eq!(object.children.len(), 2);

// First pair: "name" => "hello".
let first_pair = &object.children[0];
assert_eq!(first_pair.key.span.start.row, 1);

// Second pair: "version" => 42.
let second_pair = &object.children[1];
let Value::Number(num) = &second_pair.value else {
    panic!("expected a number");
};
assert_eq!(num.text(), "42");