PureYAML/Sources/Parsing/Parser.Events.swift
Mihaela Mihaljevic 208b892019 feat(parser): harden diagnostics and streaming
Add structured validation diagnostics, JSON and Yams comparison gates, and lazy token/event parsing so production behavior is measured without retaining full intermediate parser arrays.
2026-06-06 07:57:48 +02:00

40 lines
1.3 KiB
Swift

extension PureYAML.Parsing.Parser {
func parseEvents(_ yaml: String) throws -> [PureYAML.Parsing.Event] {
let tokens = try PureYAML.Parsing.Scanner().scan(yaml)
var parser = PureYAML.Parsing.TokenEventParser(tokens: tokens, scalarParser: self)
return try parser.parse()
}
func parseStreaming(_ yaml: String) throws -> PureYAML.Model.Value {
var composer = PureYAML.Parsing.EventStreamComposer(
scalarParser: self,
mode: .singleDocument,
)
var parser = PureYAML.Parsing.TokenEventParser(
yaml: yaml,
scalarParser: self,
eventSink: { event in
try composer.consume(event)
},
)
try parser.parseStreaming()
return try composer.composedValue()
}
func parseStreamStreaming(_ yaml: String) throws -> [PureYAML.Stream.Document] {
var composer = PureYAML.Parsing.EventStreamComposer(
scalarParser: self,
mode: .stream,
)
var parser = PureYAML.Parsing.TokenEventParser(
yaml: yaml,
scalarParser: self,
eventSink: { event in
try composer.consume(event)
},
)
try parser.parseStreaming()
return try composer.composedStream()
}
}