///|
pub struct Capability {
name : String
status : String
description : String
} derive(Eq, Debug)
///|
pub fn capabilities() -> Array[Capability] {
[
capability(
"rfc5322.headers", "implemented", "header block parsing and folded header unfolding",
),
capability(
"address.parse", "implemented", "mailbox and display-name parsing",
),
capability(
"content-type.params", "implemented", "media type, subtype, charset, boundary, and name parameters",
),
capability(
"transfer.base64", "implemented", "base64 body decoding for text payloads",
),
capability(
"transfer.quoted-printable", "implemented", "quoted-printable body decoding",
),
capability(
"mime.multipart", "implemented", "multipart boundary splitting and nested part parsing",
),
capability(
"mime.alternative", "implemented", "plain/html body extraction from multipart/alternative",
),
capability(
"mime.attachments", "implemented", "attachment metadata extraction and filename tracking",
),
capability(
"headers.encoded-word", "implemented", "RFC 2047 Q and B encoded header words",
),
capability(
"headers.list", "implemented", "List-Unsubscribe and related list metadata",
),
capability(
"auth.results", "implemented", "Authentication-Results SPF/DKIM/DMARC summary",
),
capability(
"received.path", "implemented", "Received hop parsing and route summary",
),
capability(
"dsn", "implemented", "delivery-status notification recipient parsing",
),
capability("mbox", "implemented", "mbox import and export helpers"),
capability(
"compose", "implemented", "simple text, alternative, and mixed message rendering",
),
capability(
"lint", "implemented", "missing headers, broken multipart, and risky attachment diagnostics",
),
capability(
"privacy", "implemented", "tracking pixel, remote image, and tracking URL hints",
),
capability(
"security", "implemented", "auth failure, reply-to mismatch, risky URL, and attachment signals",
),
capability(
"search", "implemented", "query by sender, recipient, subject, body, and attachment",
),
capability(
"stats", "implemented", "corpus-level message, part, html/plain, and attachment statistics",
),
capability(
"classification", "implemented", "newsletter, billing, security, CI, calendar, bounce, and personal categories",
),
capability(
"archive", "implemented", "archive keys, buckets, manifests, and health report",
),
capability(
"json.export", "implemented", "stable JSON-like summary export for messages and corpora",
),
capability(
"policy", "implemented", "message policy checks for HTML, part count, and attachments",
),
capability(
"normalization", "implemented", "line ending and raw message preparation helpers",
),
]
}
///|
pub fn capability(
name : String,
status : String,
description : String,
) -> Capability {
{ name, status, description }
}
///|
pub fn capability_count() -> Int {
capabilities().length()
}
///|
pub fn implemented_capability_count() -> Int {
let mut count = 0
for item in capabilities() {
if item.status == "implemented" {
count = count + 1
}
}
count
}
///|
pub fn capability_names() -> Array[String] {
let out : Array[String] = []
for item in capabilities() {
out.push(item.name)
}
out
}
///|
pub fn has_capability(name : String) -> Bool {
for item in capabilities() {
if item.name == name {
return true
}
}
false
}
///|
pub fn capability_markdown() -> String {
let mut out = "## Capabilities\n"
for item in capabilities() {
out = out +
"- " +
item.name +
" [" +
item.status +
"]: " +
item.description +
"\n"
}
out
}
///|
pub fn mvp_status() -> String {
"MoonMailKit MVP: " +
implemented_capability_count().to_string() +
"/" +
capability_count().to_string() +
" capabilities implemented"
}