pub mod cli;
pub mod color;
pub mod config;
pub mod error;
pub mod level;
pub mod output;
pub mod syslog;
use crate::error::{Logger2Error, Result};
pub fn parse_kv(input: &str) -> Result<(String, String)> {
let (k, v) = input
.split_once('=')
.ok_or_else(|| Logger2Error::InvalidKeyValue(input.to_string()))?;
if k.is_empty() {
return Err(Logger2Error::InvalidKeyValue(input.to_string()));
}
Ok((k.to_string(), v.to_string()))
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn parse_kv_basic() {
assert_eq!(
parse_kv("user=alice").unwrap(),
("user".to_string(), "alice".to_string())
);
}
#[test]
fn parse_kv_value_with_equals() {
assert_eq!(
parse_kv("query=a=b").unwrap(),
("query".to_string(), "a=b".to_string())
);
}
#[test]
fn parse_kv_missing_equals_errors() {
assert!(parse_kv("nope").is_err());
}
}