Skip to main content

pecto_typescript/
parser.rs

1use tree_sitter::{Parser, Tree};
2
3/// Create a tree-sitter parser for TypeScript.
4pub fn typescript_parser() -> Parser {
5    let mut parser = Parser::new();
6    parser
7        .set_language(&tree_sitter_typescript::LANGUAGE_TYPESCRIPT.into())
8        .expect("Failed to load TypeScript grammar");
9    parser
10}
11
12/// Create a tree-sitter parser for TSX.
13pub fn tsx_parser() -> Parser {
14    let mut parser = Parser::new();
15    parser
16        .set_language(&tree_sitter_typescript::LANGUAGE_TSX.into())
17        .expect("Failed to load TSX grammar");
18    parser
19}
20
21/// Parse TypeScript/JavaScript source code into a tree-sitter AST.
22pub fn parse_typescript(source: &str, is_tsx: bool) -> Option<Tree> {
23    let mut parser = if is_tsx {
24        tsx_parser()
25    } else {
26        typescript_parser()
27    };
28    parser.parse(source, None)
29}