pub const DEFAULT_USERNAME_LABEL_SEPARATOR: char = '-';
mod parse;
#[doc(inline)]
pub use parse::{
ExclusiveUsernameParsers, UsernameLabelParser, UsernameLabelState, UsernameLabels,
UsernameOpaqueLabelParser, parse_username, parse_username_lossy, parse_username_with_separator,
parse_username_with_separator_lossy,
};
mod compose;
#[doc(inline)]
pub use compose::{
ComposeError, Composer, UsernameLabelWriter, compose_username, compose_username_with_separator,
};
#[cfg(test)]
mod tests {
use crate::extensions::Extensions;
use super::*;
#[test]
fn parse_compose_username_labels() {
const COMPOSED_USERNAME: &str = "john-foo-bar-baz";
let ext = Extensions::new();
let username =
parse_username(&ext, UsernameOpaqueLabelParser::new(), COMPOSED_USERNAME).unwrap();
assert_eq!("john", username);
let labels = ext.get_ref::<UsernameLabels>().unwrap();
let compose_username_result = compose_username("john".to_owned(), labels).unwrap();
assert_eq!(COMPOSED_USERNAME, compose_username_result);
}
}