Skip to main content

Crate treesitter_types_json

Crate treesitter_types_json 

Source
Expand description

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");

Re-exports§

pub use tree_sitter_json;
pub use treesitter_types::tree_sitter;

Structs§

Array
Comment
Document
EscapeSequence
False
Null
Number
Object
Pair
Span
String
StringContent
True

Enums§

AnyNode
ParseError
StringChildren
Value

Traits§

FromNode
Every generated struct and enum implements this.
LeafNode
Implemented by every generated leaf type (identifiers, literals, etc.)
Spanned
Implemented by every generated type that has a source location.