///|
/// One parsed DNS resource record. Names are canonical absolute names.
pub(all) struct ResourceRecord {
owner : String
origin : String
ttl : Int
class_name : String
record_type : String
rdata : Array[String]
line : Int
column : Int
} derive(Eq, Debug)
///|
/// A source-linked finding. `severity` is error, warning, or note.
pub(all) struct Diagnostic {
code : String
severity : String
message : String
line : Int
column : Int
owner : String
} derive(Eq, Debug)
///|
/// A parsed zone and its syntax diagnostics.
pub(all) struct Zone {
origin : String
records : Array[ResourceRecord]
diagnostics : Array[Diagnostic]
} derive(Debug)
///|
fn diagnostic(
code : String,
severity : String,
message : String,
line : Int,
column : Int,
owner? : String = "",
) -> Diagnostic {
{ code, severity, message, line, column, owner, }
}
///|
pub fn error_count(diagnostics : Array[Diagnostic]) -> Int {
let mut result = 0
for item in diagnostics {
if item.severity == "error" {
result += 1
}
}
result
}
///|
pub fn warning_count(diagnostics : Array[Diagnostic]) -> Int {
let mut result = 0
for item in diagnostics {
if item.severity == "warning" {
result += 1
}
}
result
}