use serde::Serialize;
use crate::po::escape::EscapePoExt;
#[derive(Debug, Default, PartialEq, Eq, Serialize)]
pub struct Message {
pub line_number: usize,
pub value: String,
}
impl Message {
pub fn new<S: AsRef<str>>(line_number: usize, value: S) -> Self {
Self {
line_number,
value: value.as_ref().to_string(),
}
}
pub fn escape(&mut self) {
self.value = self.value.escape_po();
}
pub fn unescape(&mut self) {
self.value = self.value.unescape_po();
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_po_string() {
let mut msgid = Message::new(8, "test\nline 2");
assert_eq!(
format!("{msgid:?}"),
"Message { line_number: 8, value: \"test\\nline 2\" }"
);
msgid.escape();
assert_eq!(msgid.value, "test\\nline 2");
msgid.unescape();
assert_eq!(msgid.value, "test\nline 2");
}
}