use crate::Language;
#[allow(dead_code)]
pub(crate) fn get_node_types(language: Language) -> Option<LanguageNodeTypes> {
match language {
Language::TypeScript | Language::JavaScript => Some(LanguageNodeTypes {
function: "function_declaration",
class: "class_declaration",
interface: "interface_declaration",
type_alias: "type_alias_declaration",
}),
Language::Python => Some(LanguageNodeTypes {
function: "function_definition",
class: "class_definition",
interface: "", type_alias: "type_alias_statement",
}),
Language::Rust => Some(LanguageNodeTypes {
function: "function_item",
class: "struct_item", interface: "trait_item",
type_alias: "type_item",
}),
Language::Go => Some(LanguageNodeTypes {
function: "function_declaration",
class: "type_declaration", interface: "interface_type",
type_alias: "type_alias",
}),
Language::Java => Some(LanguageNodeTypes {
function: "method_declaration",
class: "class_declaration",
interface: "interface_declaration",
type_alias: "", }),
Language::Markdown => Some(LanguageNodeTypes {
function: "atx_heading", class: "setext_heading", interface: "", type_alias: "", }),
Language::C => Some(LanguageNodeTypes {
function: "function_definition",
class: "struct_specifier", interface: "", type_alias: "type_definition",
}),
Language::Cpp => Some(LanguageNodeTypes {
function: "function_definition",
class: "class_specifier",
interface: "", type_alias: "type_definition",
}),
Language::Json | Language::Yaml | Language::Toml => None,
}
}
#[allow(dead_code)]
#[derive(Debug)]
pub(crate) struct LanguageNodeTypes {
pub function: &'static str,
pub class: &'static str,
pub interface: &'static str,
pub type_alias: &'static str,
}