base_d/
lib.rs

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