@@ -15,6 +15,15 @@ struct DiagnosticJson {
1515 message: String,
1616}
1717
18+fn severity_label(s: htmlang::parser::Severity) -> &'static str {
19+ match s {
20+ htmlang::parser::Severity::Error => "error",
21+ htmlang::parser::Severity::Warning => "warning",
22+ htmlang::parser::Severity::Info => "info",
23+ htmlang::parser::Severity::Help => "help",
24+ }
25+}
26+
1827#[derive(Default)]
1928struct CompileConfig<'a> {
2029 dev: bool,
@@ -56,28 +65,17 @@ fn compile(input_path: &str, cfg: &CompileConfig) -> (bool, Vec<PathBuf>) {
5665 if let Some(collector) = cfg.json_collector {
5766 let mut collected = collector.lock().unwrap();
5867 for d in &result.diagnostics {
59− let severity = match d.severity {
60− htmlang::parser::Severity::Error => "error",
61− htmlang::parser::Severity::Warning => "warning",
62− htmlang::parser::Severity::Info => "info",
63− htmlang::parser::Severity::Help => "help",
64− };
6568 collected.push(DiagnosticJson {
6669 file: input_path.to_string(),
6770 line: d.line,
68− severity: severity.to_string(),
71+ severity: severity_label(d.severity).to_string(),
6972 message: d.message.clone(),
7073 });
7174 }
7275 }
7376 } else {
7477 for d in &result.diagnostics {
75− let prefix = match d.severity {
76− htmlang::parser::Severity::Error => "error",
77− htmlang::parser::Severity::Warning => "warning",
78− htmlang::parser::Severity::Info => "info",
79− htmlang::parser::Severity::Help => "help",
80− };
78+ let prefix = severity_label(d.severity);
8179 if let Some(col) = d.column {
8280 eprintln!("{}: line {}:{}: {}", prefix, d.line, col, d.message);
8381 } else {
@@ -313,12 +311,7 @@ fn copy_non_hl_recursive(base: &Path, dir: &Path, out_dir: &Path) {
313311fn generate_error_overlay(diagnostics: &[htmlang::parser::Diagnostic], file: &str) -> String {
314312 let mut errors = String::new();
315313 for d in diagnostics {
316− let prefix = match d.severity {
317− htmlang::parser::Severity::Error => "error",
318− htmlang::parser::Severity::Warning => "warning",
319− htmlang::parser::Severity::Info => "info",
320− htmlang::parser::Severity::Help => "help",
321− };
314+ let prefix = severity_label(d.severity);
322315 let escaped = d.message
323316 .replace('&', "&")
324317 .replace('<', "<")
@@ -616,12 +609,7 @@ fn lint_file(path: &str) -> Vec<String> {
616609
617610 // Report parser diagnostics
618611 for d in &result.diagnostics {
619− let prefix = match d.severity {
620− htmlang::parser::Severity::Error => "error",
621− htmlang::parser::Severity::Warning => "warning",
622− htmlang::parser::Severity::Info => "info",
623− htmlang::parser::Severity::Help => "help",
624− };
612+ let prefix = severity_label(d.severity);
625613 warnings.push(format!("{}:{}:{}: {}", path, d.line, prefix, d.message));
626614 }
627615
@@ -1818,12 +1806,7 @@ fn main() {
18181806 }
18191807 let result = htmlang::parser::parse(&buffer);
18201808 for d in &result.diagnostics {
1821− let prefix = match d.severity {
1822− htmlang::parser::Severity::Error => "error",
1823− htmlang::parser::Severity::Warning => "warning",
1824− htmlang::parser::Severity::Info => "info",
1825− htmlang::parser::Severity::Help => "help",
1826− };
1809+ let prefix = severity_label(d.severity);
18271810 eprintln!("{}: line {}: {}", prefix, d.line, d.message);
18281811 }
18291812 if !result.diagnostics.iter().any(|d| d.severity == htmlang::parser::Severity::Error) {
@@ -2244,11 +2227,14 @@ fn main() {
22442227 }
22452228
22462229 // Deploy via gh-pages push
2247− let status = process::Command::new("git")
2248− .args(&["init"])
2249− .current_dir(&deploy_dir)
2250− .status();
2251− if status.is_err() || !status.unwrap().success() {
2230+ let init_ok = matches!(
2231+ process::Command::new("git")
2232+ .args(&["init"])
2233+ .current_dir(&deploy_dir)
2234+ .status(),
2235+ Ok(s) if s.success()
2236+ );
2237+ if !init_ok {
22522238 eprintln!("error: git init failed in deploy directory");
22532239 process::exit(1);
22542240 }
@@ -2260,11 +2246,14 @@ fn main() {
22602246 .args(&["add", "."])
22612247 .current_dir(&deploy_dir)
22622248 .status();
2263− let status = process::Command::new("git")
2264− .args(&["commit", "-m", "deploy"])
2265− .current_dir(&deploy_dir)
2266− .status();
2267− if status.is_err() || !status.unwrap().success() {
2249+ let commit_ok = matches!(
2250+ process::Command::new("git")
2251+ .args(&["commit", "-m", "deploy"])
2252+ .current_dir(&deploy_dir)
2253+ .status(),
2254+ Ok(s) if s.success()
2255+ );
2256+ if !commit_ok {
22682257 eprintln!("error: git commit failed");
22692258 process::exit(1);
22702259 }
@@ -2280,11 +2269,14 @@ fn main() {
22802269 .current_dir(&deploy_dir)
22812270 .status();
22822271 eprintln!("pushing to gh-pages branch at {}...", remote_url);
2283− let push_status = process::Command::new("git")
2284− .args(&["push", "-f", "origin", "gh-pages"])
2285− .current_dir(&deploy_dir)
2286− .status();
2287− if push_status.is_err() || !push_status.unwrap().success() {
2272+ let push_ok = matches!(
2273+ process::Command::new("git")
2274+ .args(&["push", "-f", "origin", "gh-pages"])
2275+ .current_dir(&deploy_dir)
2276+ .status(),
2277+ Ok(s) if s.success()
2278+ );
2279+ if !push_ok {
22882280 eprintln!("error: push failed — run 'git push -f origin gh-pages' manually from {}", deploy_dir.display());
22892281 process::exit(1);
22902282 }
@@ -2825,12 +2817,7 @@ compile();
28252817 let base = Path::new(file).parent();
28262818 let result = htmlang::parser::parse_with_base(&input, base);
28272819 for d in &result.diagnostics {
2828− let prefix = match d.severity {
2829− htmlang::parser::Severity::Error => "error",
2830− htmlang::parser::Severity::Warning => "warning",
2831− htmlang::parser::Severity::Info => "info",
2832− htmlang::parser::Severity::Help => "help",
2833− };
2820+ let prefix = severity_label(d.severity);
28342821 eprintln!("{}: line {}: {}", prefix, d.line, d.message);
28352822 }
28362823 if result.diagnostics.iter().any(|d| d.severity == htmlang::parser::Severity::Error) {