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

Function parse_pattern_element

raphtory-cypher/src/parser/mod.rs:529–561  ·  view source on GitHub ↗
(
    rel_chain: &mut Vec<(RelPattern, NodePattern)>,
    first_node: &mut Option<NodePattern>,
    pair: Pair<'_, Rule>,
    un_named_counter: &mut usize,
)

Source from the content-addressed store, hash-verified

527}
528
529fn parse_pattern_element(
530 rel_chain: &mut Vec<(RelPattern, NodePattern)>,
531 first_node: &mut Option<NodePattern>,
532 pair: Pair<'_, Rule>,
533 un_named_counter: &mut usize,
534) -> Result<(), ParseError> {
535 let mut rels = vec![];
536 let mut nodes = vec![];
537
538 for pair in pair.into_inner() {
539 match pair.as_rule() {
540 Rule::NodePattern => {
541 if first_node.is_none() {
542 let np = parse_node_pattern(pair, un_named_counter)?;
543 *first_node = Some(np);
544 } else {
545 nodes.push(parse_node_pattern(pair, un_named_counter)?);
546 }
547 }
548 Rule::RelationshipPattern => {
549 rels.push(parse_rel_pattern(pair, un_named_counter)?);
550 }
551 rule => return unsupported("parse_pattern_element", &rule),
552 }
553 }
554 // interleave nodes and rels
555
556 for hop in rels.into_iter().zip(nodes) {
557 rel_chain.push(hop);
558 }
559
560 Ok(())
561}
562
563fn parse_rel_detail(
564 pair: Pair<'_, Rule>,

Callers 1

parse_pattern_partFunction · 0.85

Calls 7

parse_node_patternFunction · 0.85
parse_rel_patternFunction · 0.85
unsupportedFunction · 0.85
into_innerMethod · 0.45
is_noneMethod · 0.45
pushMethod · 0.45
into_iterMethod · 0.45

Tested by

no test coverage detected