///|
/// Parser behavior selected for non-standard but recognizable input.
pub(all) enum ParseMode {
Strict
Compatible
} derive(Debug, Eq)
///|
/// Severity of a non-fatal parse observation.
pub(all) enum DiagnosticLevel {
Warning
Info
} derive(Debug, Eq)
///|
/// Machine-stable diagnostic codes returned in compatible mode.
pub(all) enum DiagnosticCode {
BareLineFeed
BareCarriageReturn
HeaderWhitespaceBeforeColon
HeaderWithoutColon
ContinuationWithoutField
NonAsciiHeaderName
DuplicateSingletonHeader
InvalidEncodedWordPreserved
UnknownTransferEncodingPreserved
InvalidParameterPreserved
MissingMultipartPreambleBreak
TrailingBytesAfterBoundary
MissingClosingBoundaryAccepted
UnsupportedCharsetPreserved
} derive(Debug, Eq)
///|
/// Structured observation about accepted non-standard input.
pub(all) struct ParseDiagnostic {
level : DiagnosticLevel
code : DiagnosticCode
message : String
range : ByteRange
entity_path : Array[Int]
} derive(Debug, Eq)
///|
/// Stable textual spelling used by JSON and CLI reports.
pub fn DiagnosticCode::to_code(self : DiagnosticCode) -> String {
match self {
BareLineFeed => "bare-line-feed"
BareCarriageReturn => "bare-carriage-return"
HeaderWhitespaceBeforeColon => "header-whitespace-before-colon"
HeaderWithoutColon => "header-without-colon"
ContinuationWithoutField => "continuation-without-field"
NonAsciiHeaderName => "non-ascii-header-name"
DuplicateSingletonHeader => "duplicate-singleton-header"
InvalidEncodedWordPreserved => "invalid-encoded-word-preserved"
UnknownTransferEncodingPreserved => "unknown-transfer-encoding-preserved"
InvalidParameterPreserved => "invalid-parameter-preserved"
MissingMultipartPreambleBreak => "missing-multipart-preamble-break"
TrailingBytesAfterBoundary => "trailing-bytes-after-boundary"
MissingClosingBoundaryAccepted => "missing-closing-boundary-accepted"
UnsupportedCharsetPreserved => "unsupported-charset-preserved"
}
}