///|
/// Encodes ASCII letters with the ten-character Caverphone 2.0 rules.
pub fn caverphone2(input : String) -> String {
let mut value = caverphone_clean(input)
value = replace_literal_end(value, "e", "")
value = caverphone_initial_exceptions(value, true)
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, "j", "y")
value = replace_literal_start(value, "y3", "Y3")
value = replace_literal_start(value, "y", "A")
value = replace_literal_all(value, "y", "3")
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, "wh3", "Wh3")
value = replace_literal_end(value, "w", "3")
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_end(value, "r", "3")
value = replace_literal_all(value, "r", "2")
value = replace_literal_all(value, "l3", "L3")
value = replace_literal_end(value, "l", "3")
value = replace_literal_all(value, "l", "2")
value = replace_literal_all(value, "2", "")
value = replace_literal_end(value, "3", "A")
value = replace_literal_all(value, "3", "")
pad_caverphone(value, 10)
}