Skip to main content

polyphon/
lib.rs

1// SPDX-License-Identifier: MIT
2// Copyright (c) 2026 Pavel Petrov
3
4use crate::normalize::normalize;
5use crate::rules::*;
6
7pub mod normalize;
8pub mod rules;
9
10pub fn encode(s: &str) -> String {
11    let s = normalize(s);
12    let s = remove_repeats(&s);
13    let s = reduce_vowels(&s);
14    let s = replace_letters(&s);
15    let s = replace_sequences(&s);
16    s
17}
18
19#[cfg(test)]
20mod tests {
21    use super::*;
22
23    #[test]
24    fn test_encoding() {
25        assert_eq!(encode("Литие"), "лата");
26        assert_eq!(encode("ладо"), "лата");
27        assert_eq!(encode("литье"), "лата");
28        assert_eq!(encode("летие"), "лата");
29        assert_eq!(encode("лeто"), "лата");
30        assert_eq!(encode("леди"), "лата");
31    }
32}