Struct ast_grep_config::SerializableRule
source · pub struct SerializableRule {
pub pattern: Maybe<PatternStyle>,
pub kind: Maybe<String>,
pub regex: Maybe<String>,
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
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.
Implementations§
source§impl SerializableRule
impl SerializableRule
pub fn categorized(self) -> Categorized
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 more