From ec6de9a7b9bac123fb2f5cae3f48b24678e7e52e Mon Sep 17 00:00:00 2001 From: lifegpc Date: Mon, 8 Sep 2025 19:29:19 +0800 Subject: [PATCH] Support remove zero width space --- src/output_scripts/m3t.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/output_scripts/m3t.rs b/src/output_scripts/m3t.rs index 884f2a7..523395e 100644 --- a/src/output_scripts/m3t.rs +++ b/src/output_scripts/m3t.rs @@ -58,6 +58,8 @@ impl<'a> M3tParser<'a> { if line.is_empty() { continue; } + // Remove zero-width space characters + let line = line.trim().trim_matches('\u{200b}'); if line.starts_with("○") { let line = line[3..].trim(); if !line.starts_with("NAME:") { @@ -128,6 +130,8 @@ impl<'a> M3tParser<'a> { if line.is_empty() { continue; } + // Remove zero-width space characters + let line = line.trim().trim_matches('\u{200b}'); if line.starts_with("○") { let line = line[3..].trim(); if line.starts_with("NAME:") { @@ -204,3 +208,13 @@ impl M3tDumper { result } } + +#[test] +fn test_zero_width_space() { + let input = "○ NAME: Example\n\n○ Original message\n\u{200b}● 「」\n\n"; + let mut parser = M3tParser::new(input, None); + let messages = parser.parse().unwrap(); + assert_eq!(messages.len(), 1); + let map = M3tParser::new(input, None).parse_as_map().unwrap(); + assert_eq!(map.len(), 1); +}