base_d/
lib.rs

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;