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.
40 lines
1.3 KiB
Swift
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()
|
|
}
|
|
}
|