Removing Unnecessary structures for edge display in dot and graphml

This commit is contained in:
elvis
2025-07-27 14:59:35 +02:00
parent 9ee0c94e28
commit 7fcaa5c13b
3 changed files with 140 additions and 222 deletions

View File

@ -266,11 +266,11 @@ LiteralSeparatorNode: graph::NodeDisplayBase = {
};
/// Match for strings between edge formatters
LiteralSeparatorEdge: presets::EdgeDisplay = {
LiteralSeparatorEdge: graph::EdgeDisplayBase = {
PATH =>
presets::EdgeDisplay::Separator(
<>.trim_end_matches("\"").trim_start_matches("\"").to_string()
)
graph::EdgeDisplayBase::String {
string: <>.trim_end_matches("\"").trim_start_matches("\"").to_string()
}
};
NodeDisplayBase: graph::NodeDisplayBase = {
@ -317,80 +317,50 @@ SeparatorNode: graph::NodeDisplay = {
}
}
EdgeDisplay: presets::EdgeDisplay = {
EdgeDisplay: graph::EdgeDisplayBase = {
"Hide" =>
presets::EdgeDisplay::Display(
graph::GraphMapEdges::Hide
),
graph::EdgeDisplayBase::Hide,
"Products" =>
presets::EdgeDisplay::Display(
graph::GraphMapEdges::Products
),
graph::EdgeDisplayBase::Products,
"MaskProducts" <mask: Set> =>
presets::EdgeDisplay::Display(
graph::GraphMapEdges::MaskEntities{ mask }
),
graph::EdgeDisplayBase::MaskEntities{ mask },
"Entities" =>
presets::EdgeDisplay::Display(
graph::GraphMapEdges::Entities
),
graph::EdgeDisplayBase::Entities,
"MaskEntities" <mask: Set> =>
presets::EdgeDisplay::Display(
graph::GraphMapEdges::MaskEntities{ mask }
),
graph::EdgeDisplayBase::MaskEntities{ mask },
"Context" =>
presets::EdgeDisplay::Display(
graph::GraphMapEdges::Context
),
graph::EdgeDisplayBase::Context,
"MaskContext" <mask: Set> =>
presets::EdgeDisplay::Display(
graph::GraphMapEdges::MaskContext{ mask }
),
graph::EdgeDisplayBase::MaskContext{ mask },
"Union" =>
presets::EdgeDisplay::Display(
graph::GraphMapEdges::Union
),
graph::EdgeDisplayBase::Union,
"MaskUnion" <mask: Set> =>
presets::EdgeDisplay::Display(
graph::GraphMapEdges::MaskUnion{ mask }
),
graph::EdgeDisplayBase::MaskUnion{ mask },
"Difference" =>
presets::EdgeDisplay::Display(
graph::GraphMapEdges::Difference
),
graph::EdgeDisplayBase::Difference,
"MaskDifference" <mask: Set> =>
presets::EdgeDisplay::Display(
graph::GraphMapEdges::MaskDifference{ mask }
),
graph::EdgeDisplayBase::MaskDifference{ mask },
"EntitiesDeleted" =>
presets::EdgeDisplay::Display(
graph::GraphMapEdges::EntitiesDeleted
),
graph::EdgeDisplayBase::EntitiesDeleted,
"MaskEntitiesDeleted" <mask: Set> =>
presets::EdgeDisplay::Display(
graph::GraphMapEdges::MaskEntitiesDeleted{ mask }
),
graph::EdgeDisplayBase::MaskEntitiesDeleted{ mask },
"EntitiesAdded" =>
presets::EdgeDisplay::Display(
graph::GraphMapEdges::EntitiesAdded
),
graph::EdgeDisplayBase::EntitiesAdded,
"MaskEntitiesAdded" <mask: Set> =>
presets::EdgeDisplay::Display(
graph::GraphMapEdges::MaskEntitiesAdded{ mask }
),
graph::EdgeDisplayBase::MaskEntitiesAdded{ mask },
}
/// Edge display formatters separated by arbitrary strings in quotes
SeparatorEdge: Vec<presets::EdgeDisplay> = {
<v: EdgeDisplay> => vec![v],
SeparatorEdge: graph::EdgeDisplay = {
<v: EdgeDisplay> => graph::EdgeDisplay{ base: vec![v] },
<v:(<EdgeDisplay> <LiteralSeparatorEdge>)+> <e: EdgeDisplay?> =>
match e {
None => v.iter().fold(vec![],
|mut acc, (a, b)| {
acc.push(a.clone());
acc.push(b.clone());
acc.clone()
}),
None => graph::EdgeDisplay{ base: v.iter().fold(vec![],
|mut acc, (a, b)| {
acc.push(a.clone());
acc.push(b.clone());
acc.clone()
}) },
Some(e) => {
let mut v = v.iter().fold(vec![],
|mut acc, (a, b)| {
@ -399,7 +369,7 @@ SeparatorEdge: Vec<presets::EdgeDisplay> = {
acc.clone()
});
v.push(e);
v
graph::EdgeDisplay{ base: v }
}
}
}