From 7cb07b131f6b0957cb43a73cc61d76f285eee170 Mon Sep 17 00:00:00 2001 From: Dee <33315+dee@users.noreply.github.com> Date: Fri, 6 Feb 2026 10:22:03 +0100 Subject: [PATCH] Add OPS/ prefix support and deduplicate prefix list --- lib/src/epub/core.rs | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/lib/src/epub/core.rs b/lib/src/epub/core.rs index 5c6c963..48afeb1 100644 --- a/lib/src/epub/core.rs +++ b/lib/src/epub/core.rs @@ -172,6 +172,8 @@ impl Debug for EpubHtml { } impl EpubHtml { + const PREFIXES: [&str; 4] = ["", common::EPUB, common::EPUB3, "OPS/"]; + pub fn string_data(&mut self) -> String { if self._data.is_none() { self.data_mut(); @@ -209,9 +211,8 @@ impl EpubHtml { (None, self.file_name().to_string()) }; let mut f = String::from(self._file_name.as_str()); - let prefixs = ["", common::EPUB, common::EPUB3]; if self._data.is_none() && !f.is_empty() { - for prefix in prefixs.iter() { + for prefix in EpubHtml::PREFIXES.iter() { // 添加 前缀再次读取 f = format!("{prefix}{origin}"); let d = reader.read_string(f.as_str()); @@ -267,9 +268,8 @@ impl EpubHtml { (None, self.file_name().to_string()) }; let mut f = String::from(self._file_name.as_str()); - let prefixs = ["", common::EPUB, common::EPUB3]; if self._data.is_none() && self.reader.is_some() && !f.is_empty() { - for prefix in prefixs.iter() { + for prefix in EpubHtml::PREFIXES.iter() { // 添加 前缀再次读取 f = format!("{prefix}{origin}"); let s = self.reader.as_mut().unwrap(); @@ -334,9 +334,8 @@ impl EpubHtml { (None, self.file_name().to_string()) }; let mut f = String::from(self._file_name.as_str()); - let prefixs = ["", common::EPUB, common::EPUB3]; if self.raw_data.is_none() && self.reader.is_some() && !f.is_empty() { - for prefix in prefixs.iter() { + for prefix in EpubHtml::PREFIXES.iter() { // 添加 前缀再次读取 f = format!("{prefix}{origin}"); let s = self.reader.as_mut().unwrap(); @@ -449,9 +448,8 @@ impl EpubAssets { pub fn data_mut(&mut self) -> Option<&[u8]> { let mut f = String::from(self._file_name.as_str()); if self._data.is_none() && self.reader.is_some() && !f.is_empty() { - let prefixs = ["", common::EPUB, common::EPUB3]; if self._data.is_none() && self.reader.is_some() && !f.is_empty() { - for prefix in prefixs.iter() { + for prefix in EpubHtml::PREFIXES.iter() { let s = self.reader.as_mut().unwrap(); // 添加 前缀再次读取 f = format!("{prefix}{}", self._file_name); @@ -486,8 +484,7 @@ impl EpubAssets { pub fn save_to>(&mut self, file_path: T) -> IResult<()> { let mut f: String = self._file_name.clone(); if self.reader.is_some() && !f.is_empty() { - let prefixs = ["", common::EPUB, common::EPUB3]; - for prefix in prefixs.iter() { + for prefix in EpubHtml::PREFIXES.iter() { let s = self.reader.as_mut().unwrap(); f = format!("{prefix}{}", self._file_name); let d: Result<(), IError> = s