use std::fmt;
#[derive(Debug, PartialEq)]
pub enum Rule {
MergeCommit,
NeedsRebase,
SubjectLength,
SubjectMood,
SubjectWhitespace,
SubjectCapitalization,
SubjectPunctuation,
SubjectTicketNumber,
SubjectPrefix,
SubjectBuildTag,
SubjectCliche,
MessageEmptyFirstLine,
MessagePresence,
MessageLineLength,
MessageTicketNumber,
DiffPresence,
BranchNameTicketNumber,
BranchNameLength,
BranchNamePunctuation,
BranchNameCliche,
}
impl fmt::Display for Rule {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let label = match self {
Rule::MergeCommit => "MergeCommit",
Rule::NeedsRebase => "NeedsRebase",
Rule::SubjectLength => "SubjectLength",
Rule::SubjectMood => "SubjectMood",
Rule::SubjectWhitespace => "SubjectWhitespace",
Rule::SubjectCapitalization => "SubjectCapitalization",
Rule::SubjectPunctuation => "SubjectPunctuation",
Rule::SubjectTicketNumber => "SubjectTicketNumber",
Rule::SubjectPrefix => "SubjectPrefix",
Rule::SubjectBuildTag => "SubjectBuildTag",
Rule::SubjectCliche => "SubjectCliche",
Rule::MessageEmptyFirstLine => "MessageEmptyFirstLine",
Rule::MessagePresence => "MessagePresence",
Rule::MessageLineLength => "MessageLineLength",
Rule::MessageTicketNumber => "MessageTicketNumber",
Rule::DiffPresence => "DiffPresence",
Rule::BranchNameTicketNumber => "BranchNameTicketNumber",
Rule::BranchNameLength => "BranchNameLength",
Rule::BranchNamePunctuation => "BranchNamePunctuation",
Rule::BranchNameCliche => "BranchNameCliche",
};
write!(f, "{}", label)
}
}
pub fn rule_by_name(name: &str) -> Option<Rule> {
match name {
"MergeCommit" => Some(Rule::MergeCommit),
"NeedsRebase" => Some(Rule::NeedsRebase),
"SubjectLength" => Some(Rule::SubjectLength),
"SubjectMood" => Some(Rule::SubjectMood),
"SubjectWhitespace" => Some(Rule::SubjectWhitespace),
"SubjectCapitalization" => Some(Rule::SubjectCapitalization),
"SubjectPunctuation" => Some(Rule::SubjectPunctuation),
"SubjectTicketNumber" => Some(Rule::SubjectTicketNumber),
"SubjectBuildTag" => Some(Rule::SubjectBuildTag),
"SubjectPrefix" => Some(Rule::SubjectPrefix),
"SubjectCliche" => Some(Rule::SubjectCliche),
"MessageEmptyFirstLine" => Some(Rule::MessageEmptyFirstLine),
"MessagePresence" => Some(Rule::MessagePresence),
"MessageLineLength" => Some(Rule::MessageLineLength),
"MessageTicketNumber" => Some(Rule::MessageTicketNumber),
"DiffPresence" => Some(Rule::DiffPresence),
_ => None,
}
}