1mod alphabet;
2mod encoding;
3mod chunked;
4mod byte_range;
5mod config;
6
7pub use alphabet::Alphabet;
8pub use config::{AlphabetsConfig, AlphabetConfig, EncodingMode};
9
10use encoding::DecodeError;
11
12pub fn encode(data: &[u8], alphabet: &Alphabet) -> String {
13 match alphabet.mode() {
14 EncodingMode::BaseConversion => encoding::encode(data, alphabet),
15 EncodingMode::Chunked => chunked::encode_chunked(data, alphabet),
16 EncodingMode::ByteRange => byte_range::encode_byte_range(data, alphabet),
17 }
18}
19
20pub fn decode(encoded: &str, alphabet: &Alphabet) -> Result<Vec<u8>, DecodeError> {
21 match alphabet.mode() {
22 EncodingMode::BaseConversion => encoding::decode(encoded, alphabet),
23 EncodingMode::Chunked => chunked::decode_chunked(encoded, alphabet),
24 EncodingMode::ByteRange => byte_range::decode_byte_range(encoded, alphabet),
25 }
26}
27
28#[cfg(test)]
29mod tests;