aboutsummaryrefslogtreecommitdiff
path: root/Map/Business/WmapParser
diff options
context:
space:
mode:
authorRuben Beltran del Rio <git@r.bdr.sh>2025-07-11 09:27:49 +0200
committerRuben Beltran del Rio <git@r.bdr.sh>2025-07-11 09:27:49 +0200
commit8564439356f4bcc3e21b19738eb87b4c0722c623 (patch)
tree1465f4e48be83d255e5c68de804ba940db238bea /Map/Business/WmapParser
parentff3619fdf3fce82d95124654a18b66ca3ed380cd (diff)
Add missing vertex detection
Diffstat (limited to 'Map/Business/WmapParser')
-rw-r--r--Map/Business/WmapParser/Parser.swift17
1 files changed, 15 insertions, 2 deletions
diff --git a/Map/Business/WmapParser/Parser.swift b/Map/Business/WmapParser/Parser.swift
index 9418263..86c36ef 100644
--- a/Map/Business/WmapParser/Parser.swift
+++ b/Map/Business/WmapParser/Parser.swift
@@ -15,6 +15,12 @@
import Foundation
extension Wmap {
+
+ struct ParsedMap {
+ let entities: [Entity]
+ let vertexLabels: Set<String>
+ }
+
class Parser {
private let lexer: Lexer
private var currentToken: Token
@@ -25,8 +31,9 @@ extension Wmap {
self.currentToken = lexer.nextToken()
}
- func parse() -> [Entity] {
+ func parse() -> ParsedMap {
var entities: [Entity] = []
+ var vertexLabels: Set<String> = Set()
while currentToken.type != .eof {
if currentToken.type == .newline {
@@ -37,6 +44,12 @@ extension Wmap {
do {
let entity = try parseEntity()
entities.append(entity)
+ switch entity {
+ case .vertex(let vertex):
+ vertexLabels.insert(vertex.label)
+ default:
+ break
+ }
if currentToken.type == .newline {
advance()
@@ -48,7 +61,7 @@ extension Wmap {
}
}
- return entities
+ return ParsedMap(entities: entities, vertexLabels: vertexLabels)
}
private func parseEntity() throws -> Entity {