-
-
Notifications
You must be signed in to change notification settings - Fork 133
Open
Description
I can use node-tree-sitter to get a class node:
const Parser = require("tree-sitter")
const JavaScript = require("tree-sitter-javascript");
const { Query } = Parser
//#region 【JavaScript】
const parser = new Parser()
parser.setLanguage(JavaScript)
// 1. .matches
const query = new Query(
JavaScript,
`
(class_declaration name: (identifier) @class-name)
`
);
const tree = parser.parse(`
class AnimalBase {
readonly skeleton: number
readonly blood: 'red' | 'blue' | 'transparent'
}
abstract class Animal extends AnimalBase {
readonly age: number = 0
abstract shout (): void
}
class Cat extends Animal {
shout() {
console.log('mew mew')
}
}
class Dog extends Animal {
shout() {
console.log('bark bark')
}
}
`);
const matches = query.matches(tree.rootNode);
// I can get a special class node
console.log(matches[3].captures[0].node.text) // Dog
//#endregion
but how to get the inheritance chain
of the special class([Dog, Animal, AnimalBase]
)?
Metadata
Metadata
Assignees
Labels
No labels