pub struct Html;Expand description
HTML language implementation with language injection capabilities.
Uses z as the expando character for metavariables since HTML attributes
and tag names have specific character restrictions.
§Language Injection
Automatically detects and extracts embedded languages:
- JavaScript in
<script>elements (default when nolangattribute) - CSS in
<style>elements (default when nolangattribute) - Other languages when specified via
langattribute
§Examples
use thread_language::Html;
use thread_ast_engine::{Language, LanguageExt};
let html = Html;
let source = r#"
<script>console.log('hello');</script>
<style>.class { color: red; }</style>
<script lang="ts">const x: number = 42;</script>
"#;
let tree = html.ast_grep(source);
let injections = html.extract_injections(tree.root());
// injections contains JavaScript, CSS, and TypeScript ranges§Note
tree-sitter-html uses locale-dependent iswalnum for tag names.
See: https://github.com/tree-sitter/tree-sitter-html/blob/b5d9758e22b4d3d25704b72526670759a9e4d195/src/scanner.c#L194
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Html
impl<'de> Deserialize<'de> for Html
Source§fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl From<Html> for SupportLang
impl From<Html> for SupportLang
Source§impl Language for Html
impl Language for Html
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 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 blockfn 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 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 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_charSource§impl LanguageExt for Html
impl LanguageExt for Html
Source§fn get_ts_language(&self) -> TSLanguage
fn get_ts_language(&self) -> TSLanguage
Get the tree-sitter language object for parsing. Read more
Source§fn injectable_languages(&self) -> Option<&'static [&'static str]>
fn injectable_languages(&self) -> Option<&'static [&'static str]>
List of languages that can be injected into this language. Read more
impl Copy for Html
Auto Trait Implementations§
impl Freeze for Html
impl RefUnwindSafe for Html
impl Send for Html
impl Sync for Html
impl Unpin for Html
impl UnsafeUnpin for Html
impl UnwindSafe for Html
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