Struct ast_grep_config::SerializableRule
source · pub struct SerializableRule {
pub pattern: Maybe<PatternStyle>,
pub kind: Maybe<String>,
pub regex: Maybe<String>,
pub nth_child: Maybe<SerializableNthChild>,
pub inside: Maybe<Box<Relation>>,
pub has: Maybe<Box<Relation>>,
pub precedes: Maybe<Box<Relation>>,
pub follows: Maybe<Box<Relation>>,
pub all: Maybe<Vec<SerializableRule>>,
pub any: Maybe<Vec<SerializableRule>>,
pub not: Maybe<Box<SerializableRule>>,
pub matches: Maybe<String>,
}Expand description
A rule object to find matching AST nodes. We have three categories of rules in ast-grep.
-
Atomic: the most basic rule to match AST. We have two variants: Pattern and Kind.
-
Relational: filter matched target according to their position relative to other nodes.
-
Composite: use logic operation all/any/not to compose the above rules to larger rules.
Every rule has it’s unique name so we can combine several rules in one object.
Fields§
§pattern: Maybe<PatternStyle>A pattern string or a pattern object.
kind: Maybe<String>The kind name of the node to match. You can look up code’s kind names in playground.
regex: Maybe<String>A Rust regular expression to match the node’s text. https://docs.rs/regex/latest/regex/#syntax
nth_child: Maybe<SerializableNthChild>nth_child accepts number, string or object.
It specifies the position in nodes’ sibling list.
inside: Maybe<Box<Relation>>inside accepts a relational rule object.
the target node must appear inside of another node matching the inside sub-rule.
has: Maybe<Box<Relation>>has accepts a relational rule object.
the target node must has a descendant node matching the has sub-rule.
precedes: Maybe<Box<Relation>>precedes accepts a relational rule object.
the target node must appear before another node matching the precedes sub-rule.
follows: Maybe<Box<Relation>>follows accepts a relational rule object.
the target node must appear after another node matching the follows sub-rule.
all: Maybe<Vec<SerializableRule>>A list of sub rules and matches a node if all of sub rules match. The meta variables of the matched node contain all variables from the sub-rules.
any: Maybe<Vec<SerializableRule>>A list of sub rules and matches a node if any of sub rules match. The meta variables of the matched node only contain those of the matched sub-rule.
not: Maybe<Box<SerializableRule>>A single sub-rule and matches a node if the sub rule does not match.
matches: Maybe<String>A utility rule id and matches a node if the utility rule matches.
Trait Implementations§
source§impl Clone for SerializableRule
impl Clone for SerializableRule
source§fn clone(&self) -> SerializableRule
fn clone(&self) -> SerializableRule
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moresource§impl Default for SerializableRule
impl Default for SerializableRule
source§fn default() -> SerializableRule
fn default() -> SerializableRule
source§impl<'de> Deserialize<'de> for SerializableRule
impl<'de> Deserialize<'de> for SerializableRule
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>,
source§impl JsonSchema for SerializableRule
impl JsonSchema for SerializableRule
source§fn schema_name() -> String
fn schema_name() -> String
source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
source§fn json_schema(gen: &mut SchemaGenerator) -> Schema
fn json_schema(gen: &mut SchemaGenerator) -> Schema
source§fn is_referenceable() -> bool
fn is_referenceable() -> bool
$ref keyword. Read moreAuto Trait Implementations§
impl Freeze for SerializableRule
impl RefUnwindSafe for SerializableRule
impl Send for SerializableRule
impl Sync for SerializableRule
impl Unpin for SerializableRule
impl UnwindSafe for SerializableRule
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
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit)