pub struct DynLang(pub Language);Expand description
A dynamically loaded language for ast-grep.
Wraps a tree-sitter Language to implement ast-grep’s Language trait, enabling pattern-based searches with dynamically loaded grammars.
Tuple Fields§
§0: LanguageImplementations§
Trait Implementations§
Source§impl Language for DynLang
impl Language for DynLang
fn kind_to_id(&self, kind: &str) -> u16
fn field_to_id(&self, field: &str) -> Option<u16>
fn build_pattern( &self, builder: &PatternBuilder<'_>, ) -> Result<Pattern, PatternError>
Source§fn 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
Source§fn 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 #
Source§fn 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.
Source§fn 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
Source§impl LanguageExt for DynLang
impl LanguageExt for DynLang
Source§fn get_ts_language(&self) -> TSLanguage
fn get_ts_language(&self) -> TSLanguage
tree sitter language to parse the source
Source§fn ast_grep<S>(&self, source: S) -> Root<StrDoc<Self>>
fn ast_grep<S>(&self, source: S) -> Root<StrDoc<Self>>
Create an
AstGrep instance for the languagefn injectable_languages(&self) -> Option<&'static [&'static str]>
Source§fn extract_injections<L>(
&self,
_root: Node<'_, StrDoc<L>>,
) -> HashMap<String, Vec<Range>>where
L: LanguageExt,
fn extract_injections<L>(
&self,
_root: Node<'_, StrDoc<L>>,
) -> HashMap<String, Vec<Range>>where
L: LanguageExt,
get injected language regions in the root document. e.g. get JavaScripts in HTML
it will return a list of tuples of (language, regions).
The first item is the embedded region language, e.g. javascript
The second item is a list of regions in tree_sitter.
also see https://tree-sitter.github.io/tree-sitter/using-parsers#multi-language-documents
Auto Trait Implementations§
impl Freeze for DynLang
impl RefUnwindSafe for DynLang
impl Send for DynLang
impl Sync for DynLang
impl Unpin for DynLang
impl UnsafeUnpin for DynLang
impl UnwindSafe for DynLang
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request