use std::fmt;
#[derive(Debug)]
pub struct Warning {
pub end: usize,
pub message: WarningMessage,
pub start: usize,
}
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
pub enum WarningMessage {
DefinitionTermContinuation,
EndTagInComment,
InvalidCharacter,
InvalidHeadingSyntaxRewinding,
InvalidLinkSyntax,
InvalidParameterSyntax,
InvalidTagSyntax,
MissingEndTagRewinding,
RepeatedEmptyLine,
StrayTextInTable,
TextAfterRedirect,
UnexpectedEndTagRewinding,
UnexpectedEndTag,
UnexpectedHeadingLevelCorrecting,
UnrecognizedTagName,
UselessTextInParameter,
UselessTextInRedirect,
}
impl WarningMessage {
pub fn message(self) -> &'static str {
match self {
WarningMessage::DefinitionTermContinuation => {
"List broken by definition term."
}
WarningMessage::EndTagInComment => "End tag in comment.",
WarningMessage::InvalidCharacter => "Invalid character.",
WarningMessage::InvalidHeadingSyntaxRewinding => {
"Invalid heading syntax. Rewinding."
}
WarningMessage::InvalidLinkSyntax => "Invalid link syntax.",
WarningMessage::InvalidParameterSyntax => {
"Invalid parameter syntax."
}
WarningMessage::InvalidTagSyntax => "Invalid tag syntax.",
WarningMessage::MissingEndTagRewinding => {
"Missing end tag. Rewinding."
}
WarningMessage::RepeatedEmptyLine => "Repeated empty line.",
WarningMessage::StrayTextInTable => "Stray text in table.",
WarningMessage::TextAfterRedirect => {
"Wiki text comes after a redirect."
}
WarningMessage::UnexpectedEndTagRewinding => {
"The end tag does not match the last start tag. Rewinding."
}
WarningMessage::UnexpectedEndTag => {
"An end tag was found with no preceeding start tag."
}
WarningMessage::UnexpectedHeadingLevelCorrecting => {
"Expected heading of higher level. Correcting start of heading."
}
WarningMessage::UnrecognizedTagName => {
"A tag with an unrecognized tag name was found."
}
WarningMessage::UselessTextInParameter => {
"Useless text in parameter."
}
WarningMessage::UselessTextInRedirect => {
"Useless text in redirect."
}
}
}
}
impl fmt::Display for WarningMessage {
fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.write_str(self.message())
}
}