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