MCPcopy Create free account
hub / github.com/Pometry/Raphtory / parse_node_pattern

Function parse_node_pattern

raphtory-cypher/src/parser/mod.rs:632–670  ·  view source on GitHub ↗
(
    pair: Pair<'_, Rule>,
    un_named_counter: &mut usize,
)

Source from the content-addressed store, hash-verified

630}
631
632fn parse_node_pattern(
633 pair: Pair<'_, Rule>,
634 un_named_counter: &mut usize,
635) -> Result<NodePattern, ParseError> {
636 let mut node = NodePattern::default();
637 for pair in pair.into_inner() {
638 match pair.as_rule() {
639 Rule::Variable => {
640 let var = parse_variable(pair)?;
641 node.name = var;
642 }
643 Rule::NodeLabels => {
644 let labels = pair
645 .into_inner()
646 .filter_map(|pair| parse_node_label(pair))
647 .collect();
648 node.labels = labels;
649 }
650 Rule::Properties => match pair.into_inner().next() {
651 Some(pair) => match pair.as_rule() {
652 Rule::MapLiteral => {
653 let props = parse_map_literal(pair)?;
654 node.props = Some(props);
655 }
656 rule => return unsupported("parse_node_pattern 2", &rule),
657 },
658 None => {}
659 },
660 rule => return unsupported("parse_node_pattern 1", &rule),
661 }
662 }
663
664 if node.name.is_empty() {
665 node.name = format!("n_{}", un_named_counter);
666 *un_named_counter += 1;
667 }
668
669 Ok(node)
670}
671
672fn parse_node_label(pair: Pair<'_, Rule>) -> Option<String> {
673 match pair.as_rule() {

Callers 5

parse_pattern_elementFunction · 0.85
check_node_pattern_emptyFunction · 0.85
check_node_pattern_nameFunction · 0.85
check_node_pattern_labelFunction · 0.85

Calls 8

parse_variableFunction · 0.85
parse_node_labelFunction · 0.85
parse_map_literalFunction · 0.85
unsupportedFunction · 0.85
into_innerMethod · 0.45
collectMethod · 0.45
nextMethod · 0.45
is_emptyMethod · 0.45

Tested by 4

check_node_pattern_emptyFunction · 0.68
check_node_pattern_nameFunction · 0.68
check_node_pattern_labelFunction · 0.68