pub struct SerializableRule {Show 13 fields
pub pattern: Maybe<PatternStyle>,
pub kind: Maybe<String>,
pub regex: Maybe<String>,
pub nth_child: Maybe<SerializableNthChild>,
pub range: Maybe<SerializableRange>,
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<SerializableMatches>,
}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.
range: Maybe<SerializableRange>range accepts a range object.
the target node must exactly appear in the range.
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<SerializableMatches>A utility rule id or parameterized utility call object.
When multiple utility calls are present, they are combined with logical all.
Trait Implementations§
Source§impl Clone for SerializableRule
impl Clone for SerializableRule
Source§fn clone(&self) -> SerializableRule
fn clone(&self) -> SerializableRule
1.0.0 (const: unstable) · 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_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read more