(** Common attribute utilities used across checkers. *) type attrs = (string * string) list let has_attr name attrs = List.exists (fun (n, _) -> String.lowercase_ascii n = name) attrs let get_attr name attrs = List.find_map (fun (n, v) -> if String.lowercase_ascii n = name then Some v else None ) attrs let get_attr_or name ~default attrs = Option.value ~default (get_attr name attrs) let is_non_empty_attr name attrs = match get_attr name attrs with | Some v -> String.trim v <> "" | None -> false