Trait ast_grep_core::language::Language
source · [−]pub trait Language: Clone {
fn get_ts_language(&self) -> TSLanguage;
fn from_path<P: AsRef<Path>>(_path: P) -> Option<Self> { ... }
fn ast_grep<S: AsRef<str>>(&self, source: S) -> AstGrep<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
Return the file language from path. Return None if the file type is not supported.
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