blob: 904f492cb49a063b0726b144b39c9caf305c375e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
extension Map {
static func parse(content: String) -> ParsedMap {
let parsers = [
AnyMapParserStrategy(VertexParserStrategy()),
AnyMapParserStrategy(EdgeParserStrategy()),
AnyMapParserStrategy(BlockerParserStrategy()),
AnyMapParserStrategy(OpportunityParserStrategy()),
AnyMapParserStrategy(StageParserStrategy()),
]
let builder = MapBuilder()
let lines = content.split(whereSeparator: \.isNewline)
for (index, line) in lines.enumerated() {
for parser in parsers {
if parser.canHandle(line: String(line)) {
let (type, object) = parser.handle(
index: index, line: String(line), vertices: builder.vertices)
builder.addObjectToMap(type: type, object: object)
break
}
}
}
return builder.build()
}
}
|