Trait ast_grep_core::language::Language
source · pub trait Language: Clone {
// Required method
fn get_ts_language(&self) -> TSLanguage;
// Provided methods
fn from_path<P: AsRef<Path>>(_path: P) -> Option<Self> { ... }
fn ast_grep<S: AsRef<str>>(&self, source: S) -> AstGrep<StrDoc<Self>> { ... }
fn skippable_kind_ids(&self) -> &'static [u16] { ... }
fn pre_process_pattern<'q>(&self, query: &'q str) -> Cow<'q, str> { ... }
fn meta_var_char(&self) -> char { ... }
fn expando_char(&self) -> char { ... }
fn extract_meta_var(&self, source: &str) -> Option<MetaVariable> { ... }
}
Expand description
Trait to abstract ts-language usage in ast-grep, which includes:
- which character is used for meta variable.
- if we need to use other char in meta var for parser at runtime
- pre process the Pattern code.
Required Methods§
sourcefn get_ts_language(&self) -> TSLanguage
fn get_ts_language(&self) -> TSLanguage
tree sitter language to parse the source
Provided Methods§
sourcefn from_path<P: AsRef<Path>>(_path: P) -> Option<Self>
fn from_path<P: AsRef<Path>>(_path: P) -> Option<Self>
Return the file language from path. Return None if the file type is not supported.
sourcefn ast_grep<S: AsRef<str>>(&self, source: S) -> AstGrep<StrDoc<Self>>
fn ast_grep<S: AsRef<str>>(&self, source: S) -> AstGrep<StrDoc<Self>>
Create an AstGrep
instance for the language
sourcefn skippable_kind_ids(&self) -> &'static [u16]
fn skippable_kind_ids(&self) -> &'static [u16]
ignore trivial tokens in language matching
sourcefn pre_process_pattern<'q>(&self, query: &'q str) -> Cow<'q, str>
fn pre_process_pattern<'q>(&self, query: &'q str) -> Cow<'q, str>
normalize pattern code before matching e.g. remove expression_statement, or prefer parsing {} to object over block
sourcefn meta_var_char(&self) -> char
fn meta_var_char(&self) -> char
Configure meta variable special character By default $ is the metavar char, but in PHP it can be #
sourcefn expando_char(&self) -> char
fn expando_char(&self) -> char
Some language does not accept $ as the leading char for identifiers. We need to change $ to other char at run-time to make parser happy, thus the name expando. By default this is the same as meta_var char so replacement is done at runtime.
sourcefn extract_meta_var(&self, source: &str) -> Option<MetaVariable>
fn extract_meta_var(&self, source: &str) -> Option<MetaVariable>
extract MetaVariable from a given source string At runtime we need to use expand_char