forgot label for edges

This commit is contained in:
elvis
2025-11-15 19:03:24 +01:00
parent cfa62ffef6
commit 500f711b0a
8 changed files with 36 additions and 2 deletions

View File

@ -114,6 +114,7 @@ pub enum QualifierSystem {
pub enum QualifierEdge { pub enum QualifierEdge {
Source, Source,
Target, Target,
Label,
} }
#[derive(Clone, Copy, Serialize, Deserialize, Hash)] #[derive(Clone, Copy, Serialize, Deserialize, Hash)]
@ -304,8 +305,12 @@ impl Unary {
) => Ok(AssertionTypes::Set), ) => Ok(AssertionTypes::Set),
| (Self::ToEl, AssertionTypes::String) => | (Self::ToEl, AssertionTypes::String) =>
Ok(AssertionTypes::Element), Ok(AssertionTypes::Element),
| (Self::Qualifier(Qualifier::Edge(_)), AssertionTypes::Edge) => | (Self::Qualifier(Qualifier::Edge(QualifierEdge::Source)), AssertionTypes::Edge) =>
Ok(AssertionTypes::Node), Ok(AssertionTypes::Node),
| (Self::Qualifier(Qualifier::Edge(QualifierEdge::Target)), AssertionTypes::Edge) =>
Ok(AssertionTypes::Node),
| (Self::Qualifier(Qualifier::Edge(QualifierEdge::Label)), AssertionTypes::Edge) =>
Ok(AssertionTypes::Label),
| ( | (
Self::Qualifier(Qualifier::Node(QualifierNode::Neighbours)), Self::Qualifier(Qualifier::Node(QualifierNode::Neighbours)),
AssertionTypes::Node, AssertionTypes::Node,
@ -839,6 +844,12 @@ impl AssertReturnValue {
) => Ok(AssertReturnValue::Node( ) => Ok(AssertReturnValue::Node(
graph.edge_endpoints(edge).unwrap().1, graph.edge_endpoints(edge).unwrap().1,
)), )),
| (
AssertReturnValue::Edge(edge),
Unary::Qualifier(Qualifier::Edge(QualifierEdge::Label)),
) => Ok(AssertReturnValue::Label(
graph[edge].clone()
)),
| ( | (
AssertReturnValue::Node(node), AssertReturnValue::Node(node),
Unary::Qualifier(Qualifier::Node(QualifierNode::Neighbours)), Unary::Qualifier(Qualifier::Node(QualifierNode::Neighbours)),

View File

@ -181,6 +181,7 @@ impl fmt::Debug for QualifierEdge {
match self { match self {
| Self::Source => write!(f, "source"), | Self::Source => write!(f, "source"),
| Self::Target => write!(f, "target"), | Self::Target => write!(f, "target"),
| Self::Label => write!(f, "label"),
} }
} }
} }

View File

@ -130,6 +130,7 @@ pub enum QualifierSystem {
pub enum QualifierEdge { pub enum QualifierEdge {
Source, Source,
Target, Target,
Label,
} }
#[derive(Clone, Copy, Serialize, Deserialize, Hash)] #[derive(Clone, Copy, Serialize, Deserialize, Hash)]
@ -334,9 +335,17 @@ impl PositiveUnary {
| (Self::ToEl, PositiveAssertionTypes::String) => | (Self::ToEl, PositiveAssertionTypes::String) =>
Ok(PositiveAssertionTypes::PositiveElement), Ok(PositiveAssertionTypes::PositiveElement),
| ( | (
Self::Qualifier(PositiveQualifier::Edge(_)), Self::Qualifier(PositiveQualifier::Edge(QualifierEdge::Source)),
PositiveAssertionTypes::Edge, PositiveAssertionTypes::Edge,
) => Ok(PositiveAssertionTypes::Node), ) => Ok(PositiveAssertionTypes::Node),
| (
Self::Qualifier(PositiveQualifier::Edge(QualifierEdge::Target)),
PositiveAssertionTypes::Edge,
) => Ok(PositiveAssertionTypes::Node),
| (
Self::Qualifier(PositiveQualifier::Edge(QualifierEdge::Label)),
PositiveAssertionTypes::Edge,
) => Ok(PositiveAssertionTypes::Label),
| ( | (
Self::Qualifier(PositiveQualifier::Node( Self::Qualifier(PositiveQualifier::Node(
QualifierNode::Neighbours, QualifierNode::Neighbours,
@ -999,6 +1008,14 @@ impl PositiveAssertReturnValue {
) => Ok(PositiveAssertReturnValue::Node( ) => Ok(PositiveAssertReturnValue::Node(
graph.edge_endpoints(edge).unwrap().1, graph.edge_endpoints(edge).unwrap().1,
)), )),
| (
PositiveAssertReturnValue::Edge(edge),
PositiveUnary::Qualifier(PositiveQualifier::Edge(
QualifierEdge::Label,
)),
) => Ok(PositiveAssertReturnValue::Label(
graph[edge].clone(),
)),
| ( | (
PositiveAssertReturnValue::Node(node), PositiveAssertReturnValue::Node(node),
PositiveUnary::Qualifier(PositiveQualifier::Node( PositiveUnary::Qualifier(PositiveQualifier::Node(

View File

@ -181,6 +181,7 @@ impl fmt::Debug for QualifierEdge {
match self { match self {
| Self::Source => write!(f, "source"), | Self::Source => write!(f, "source"),
| Self::Target => write!(f, "target"), | Self::Target => write!(f, "target"),
| Self::Label => write!(f, "label"),
} }
} }
} }

View File

@ -251,6 +251,7 @@ AssertQualifierSystem: relabel::QualifierSystem = {
AssertQualifierEdge: relabel::QualifierEdge = { AssertQualifierEdge: relabel::QualifierEdge = {
"source" => relabel::QualifierEdge::Source, "source" => relabel::QualifierEdge::Source,
"target" => relabel::QualifierEdge::Target, "target" => relabel::QualifierEdge::Target,
"label" => relabel::QualifierEdge::Label,
} }
AssertQualifierNode: relabel::QualifierNode = { AssertQualifierNode: relabel::QualifierNode = {

View File

@ -252,6 +252,7 @@ GroupQualifierSystem: grouping::QualifierSystem = {
GroupQualifierEdge: grouping::QualifierEdge = { GroupQualifierEdge: grouping::QualifierEdge = {
"source" => grouping::QualifierEdge::Source, "source" => grouping::QualifierEdge::Source,
"target" => grouping::QualifierEdge::Target, "target" => grouping::QualifierEdge::Target,
"label" => grouping::QualifierEdge::Label,
} }
GroupQualifierNode: grouping::QualifierNode = { GroupQualifierNode: grouping::QualifierNode = {

View File

@ -255,6 +255,7 @@ AssertQualifierSystem: positive_relabel::QualifierSystem = {
AssertQualifierEdge: positive_relabel::QualifierEdge = { AssertQualifierEdge: positive_relabel::QualifierEdge = {
"source" => positive_relabel::QualifierEdge::Source, "source" => positive_relabel::QualifierEdge::Source,
"target" => positive_relabel::QualifierEdge::Target, "target" => positive_relabel::QualifierEdge::Target,
"label" => positive_relabel::QualifierEdge::Label,
} }
AssertQualifierNode: positive_relabel::QualifierNode = { AssertQualifierNode: positive_relabel::QualifierNode = {

View File

@ -256,6 +256,7 @@ GroupQualifierSystem: positive_grouping::QualifierSystem = {
GroupQualifierEdge: positive_grouping::QualifierEdge = { GroupQualifierEdge: positive_grouping::QualifierEdge = {
"source" => positive_grouping::QualifierEdge::Source, "source" => positive_grouping::QualifierEdge::Source,
"target" => positive_grouping::QualifierEdge::Target, "target" => positive_grouping::QualifierEdge::Target,
"label" => positive_grouping::QualifierEdge::Label,
} }
GroupQualifierNode: positive_grouping::QualifierNode = { GroupQualifierNode: positive_grouping::QualifierNode = {