///|
/// Encodes ASCII letters with the six-character Caverphone 1.0 rules.
pub fn caverphone1(input : String) -> String {
let mut value = caverphone_clean(input)
value = caverphone_initial_exceptions(value, false)
value = replace_literal_end(value, "mb", "m2")
value = caverphone_common_replacements(value)
value = replace_initial_vowel(value)
value = replace_lowercase_vowels(value)
value = replace_literal_all(value, "3gh3", "3kh3")
value = replace_literal_all(value, "gh", "22")
value = replace_literal_all(value, "g", "k")
value = caverphone_collapse_consonants(value)
value = replace_literal_all(value, "w3", "W3")
value = replace_literal_all(value, "wy", "Wy")
value = replace_literal_all(value, "wh3", "Wh3")
value = replace_literal_all(value, "why", "Why")
value = replace_literal_all(value, "w", "2")
value = replace_literal_start(value, "h", "A")
value = replace_literal_all(value, "h", "2")
value = replace_literal_all(value, "r3", "R3")
value = replace_literal_all(value, "ry", "Ry")
value = replace_literal_all(value, "r", "2")
value = replace_literal_all(value, "l3", "L3")
value = replace_literal_all(value, "ly", "Ly")
value = replace_literal_all(value, "l", "2")
value = replace_literal_all(value, "j", "y")
value = replace_literal_all(value, "y3", "Y3")
value = replace_literal_all(value, "y", "2")
pad_caverphone(remove_caverphone_markers(value), 6)
}