analyzeRule method
void
analyzeRule(
- Rule rule,
- int level
)
Implementation
void analyzeRule(Rule rule, int level) {
if (rule.elementMatcher is ElementWayMatcher) {
if (rule.closedMatcher is ClosedWayMatcher) {
addClosedWay(rule);
} else if (rule.closedMatcher is LinearWayMatcher) {
addOpenWay(rule);
} else if (rule.closedMatcher is AnyMatcher) {
addClosedWay(rule);
addOpenWay(rule);
} else {
print("Unknown closedMatcher ${rule.closedMatcher} for ways");
}
} else if (rule.elementMatcher is ElementNodeMatcher) {
if (rule.closedMatcher is ClosedWayMatcher) {
print("Unknown closedMatcher ${rule.closedMatcher} for closed node");
} else if (rule.closedMatcher is LinearWayMatcher) {
print("Unknown closedMatcher ${rule.closedMatcher} for open node");
} else if (rule.closedMatcher is AnyMatcher) {
addNode(rule);
} else {
print("Unknown closedMatcher ${rule.closedMatcher} for nodes");
}
} else if (rule.elementMatcher is AnyMatcher) {
if (rule.closedMatcher is ClosedWayMatcher) {
addClosedWay(rule);
} else if (rule.closedMatcher is LinearWayMatcher) {
addOpenWay(rule);
} else if (rule.closedMatcher is AnyMatcher) {
addClosedWay(rule);
addOpenWay(rule);
addNode(rule);
} else {
print("Unknown closedMatcher ${rule.closedMatcher} for any");
}
} else {
print("Unknown elementMatcher ${rule.elementMatcher}");
}
if (rule is PositiveRule) {
if (debug)
print(
"${' ' * level * 2}Zoom: ${rule.zoomlevelRange.zoomlevelMin} - ${rule.zoomlevelRange.zoomlevelMax}, ${rule.elementMatcher is ElementWayMatcher ? "Way" : rule.elementMatcher is ElementNodeMatcher ? "Node" : "Any Element"}, ${rule.closedMatcher is ClosedWayMatcher ? "Closed" : rule.closedMatcher is LinearWayMatcher ? "Open" : rule.closedMatcher is AnyMatcher ? "OpenOrClosed" : "Unknown"}, keyMatcher: ${rule.keyMatcher}, valueMatcher: ${rule.valueMatcher}");
} else if (rule is NegativeRule) {
if (debug)
print(
"${' ' * level * 2}Zoom: ${rule.zoomlevelRange.zoomlevelMin} - ${rule.zoomlevelRange.zoomlevelMax}, ${rule.elementMatcher is ElementWayMatcher ? "Way" : rule.elementMatcher is ElementNodeMatcher ? "Node" : "Any Element"}, ${rule.closedMatcher is ClosedWayMatcher ? "Closed" : rule.closedMatcher is LinearWayMatcher ? "Open" : rule.closedMatcher is AnyMatcher ? "OpenOrClosed" : "Unknown"}, attributeMatcher: ${rule.attributeMatcher}");
} else {
print("${' ' * level * 2}Unknown rule ${rule.runtimeType}");
}
if (rule.instructions is InstructionInstructions) {
for (RenderInstructionNode renderInstruction in (rule.instructions as InstructionInstructions).renderInstructionNodes) {
if (debug) print("${' ' * level * 2}--> Node ${renderInstruction.runtimeType}");
if (renderInstruction is RenderinstructionCaption) {
String? textKey = renderInstruction.base.textKey?.key;
if (textKey != null) keys.add(textKey);
}
}
for (RenderInstructionWay renderInstruction in (rule.instructions as InstructionInstructions).renderInstructionOpenWays) {
if (debug) print("${' ' * level * 2}--> Open Way ${renderInstruction.runtimeType}");
if (renderInstruction is RenderinstructionCaption) {
String? textKey = renderInstruction.base.textKey?.key;
if (textKey != null) keys.add(textKey);
} else if (renderInstruction is RenderinstructionPathtext) {
String? textKey = renderInstruction.base.textKey?.key;
if (textKey != null) keys.add(textKey);
}
}
for (RenderInstructionWay renderInstruction in (rule.instructions as InstructionInstructions).renderInstructionClosedWays) {
if (debug) print("${' ' * level * 2}--> Closed Way ${renderInstruction.runtimeType}");
if (renderInstruction is RenderinstructionCaption) {
String? textKey = renderInstruction.base.textKey?.key;
if (textKey != null) keys.add(textKey);
} else if (renderInstruction is RenderinstructionPathtext) {
String? textKey = renderInstruction.base.textKey?.key;
if (textKey != null) keys.add(textKey);
}
}
} else {
for (Shape shape in (rule.instructions as ShapeInstructions).shapeNodes) {
if (debug) print("${' ' * level * 2}--> Node ${shape.runtimeType}, level ${shape.level}");
if (shape is ShapeCaption) {
String? textKey = shape.textKey?.key;
if (textKey != null) keys.add(textKey);
}
}
for (Shape shape in (rule.instructions as ShapeInstructions).shapeOpenWays) {
if (debug) print("${' ' * level * 2}--> Open Way ${shape.runtimeType}, level ${shape.level}");
if (shape is ShapeCaption) {
String? textKey = shape.textKey?.key;
if (textKey != null) keys.add(textKey);
} else if (shape is ShapePathtext) {
String? textKey = shape.textKey?.key;
if (textKey != null) keys.add(textKey);
}
}
for (Shape shape in (rule.instructions as ShapeInstructions).shapeClosedWays) {
if (debug) print("${' ' * level * 2}--> Closed Way ${shape.runtimeType}, level ${shape.level}");
if (shape is ShapeCaption) {
String? textKey = shape.textKey?.key;
if (textKey != null) keys.add(textKey);
} else if (shape is ShapePathtext) {
String? textKey = shape.textKey?.key;
if (textKey != null) keys.add(textKey);
}
}
}
for (Rule subRule in rule.subRules) {
analyzeRule(subRule, level + 2);
}
}