pub struct EpubFileLoader<'a, T, P = RawTextProcessor> { /* private fields */ }epub only.Expand description
Iterator pipeline for synchronous EPUB loading and chapter processing.
P selects text processing and defaults to RawTextProcessor.
Loading and processing errors are yielded unless filtered; unavailable chapter
text is skipped.
Implementations§
Source§impl<'a, P> EpubFileLoader<'a, Result<PathBuf, EpubLoaderError>, P>
impl<'a, P> EpubFileLoader<'a, Result<PathBuf, EpubLoaderError>, P>
Sourcepub fn load(
self,
) -> EpubFileLoader<'a, Result<EpubDoc<BufReader<File>>, EpubLoaderError>, P>
pub fn load( self, ) -> EpubFileLoader<'a, Result<EpubDoc<BufReader<File>>, EpubLoaderError>, P>
Loads each EPUB during iteration, yielding document-loading errors.
use rig_core::loaders::{EpubFileLoader, RawTextProcessor};
let content = EpubFileLoader::<_, RawTextProcessor>::with_glob("tests/data/*.epub")?.load().into_iter();
for result in content {
match result {
Ok(doc) => println!("{doc:?}"),
Err(e) => eprintln!("Error reading epub: {e}"),
}
}Sourcepub fn load_with_path(
self,
) -> EpubFileLoader<'a, Result<(PathBuf, EpubDoc<BufReader<File>>), EpubLoaderError>, P>
pub fn load_with_path( self, ) -> EpubFileLoader<'a, Result<(PathBuf, EpubDoc<BufReader<File>>), EpubLoaderError>, P>
Loads each EPUB paired with its source path, yielding loading errors.
use rig_core::loaders::{EpubFileLoader, RawTextProcessor};
let content = EpubFileLoader::<_, RawTextProcessor>::with_glob("tests/data/*.epub")?.load_with_path().into_iter();
for result in content {
match result {
Ok((path, doc)) => println!("{path:?} {doc:?}"),
Err(e) => eprintln!("Error reading epub: {e}"),
}
}Source§impl<'a, P> EpubFileLoader<'a, Result<PathBuf, EpubLoaderError>, P>where
P: TextProcessor,
impl<'a, P> EpubFileLoader<'a, Result<PathBuf, EpubLoaderError>, P>where
P: TextProcessor,
Sourcepub fn read(self) -> EpubFileLoader<'a, Result<String, EpubLoaderError>, P>
pub fn read(self) -> EpubFileLoader<'a, Result<String, EpubLoaderError>, P>
Concatenates processed chapters without separators, yielding loading or processing errors. Unavailable chapter text is skipped.
let content = EpubFileLoader::<_, RawTextProcessor>::with_glob("tests/data/*.epub")?.read().into_iter();
for result in content {
match result {
Ok(content) => println!("{content}"),
Err(e) => eprintln!("Error reading epub: {e}"),
}
}Sourcepub fn read_with_path(
self,
) -> EpubFileLoader<'a, Result<(PathBuf, String), EpubLoaderError>, P>
pub fn read_with_path( self, ) -> EpubFileLoader<'a, Result<(PathBuf, String), EpubLoaderError>, P>
Pairs each path with concatenated processed chapters, yielding loading or processing errors. Unavailable chapter text is skipped.
let content = EpubFileLoader::<_, RawTextProcessor>::with_glob("tests/data/*.epub")?.read_with_path().into_iter();
for result in content {
match result {
Ok((path, content)) => println!("{path:?} {content}"),
Err(e) => eprintln!("Error reading epub: {e}"),
}
}Source§impl<'a, P> EpubFileLoader<'a, EpubDoc<BufReader<File>>, P>where
P: TextProcessor + 'a,
impl<'a, P> EpubFileLoader<'a, EpubDoc<BufReader<File>>, P>where
P: TextProcessor + 'a,
Sourcepub fn by_chapter(
self,
) -> EpubFileLoader<'a, Result<String, EpubLoaderError>, P>
pub fn by_chapter( self, ) -> EpubFileLoader<'a, Result<String, EpubLoaderError>, P>
Yields processed chapter results across documents in input order, skipping unavailable chapter text.
let content = EpubFileLoader::<_, RawTextProcessor>::with_glob("tests/data/*.epub")?
.load()
.ignore_errors()
.by_chapter()
.into_iter();
for result in content {
match result {
Ok(chapter) => println!("{chapter}"),
Err(e) => eprintln!("Error reading chapter: {e}"),
}
}Source§impl<'a, P: TextProcessor> EpubFileLoader<'a, (PathBuf, EpubDoc<BufReader<File>>), P>
impl<'a, P: TextProcessor> EpubFileLoader<'a, (PathBuf, EpubDoc<BufReader<File>>), P>
Sourcepub fn by_chapter(
self,
) -> EpubFileLoader<'a, (PathBuf, Vec<(usize, Result<String, EpubLoaderError>)>), P>
pub fn by_chapter( self, ) -> EpubFileLoader<'a, (PathBuf, Vec<(usize, Result<String, EpubLoaderError>)>), P>
Pairs each path with zero-based indices and chapter-processing results. Indices count available chapter texts, not skipped source entries.
let content = EpubFileLoader::<_, RawTextProcessor>::with_glob("tests/data/*.epub")?
.load_with_path()
.ignore_errors()
.by_chapter()
.ignore_errors()
.into_iter();
for result in content {
println!("{result:?}");
}Source§impl<'a, P> EpubFileLoader<'a, (PathBuf, Vec<(usize, Result<String, EpubLoaderError>)>), P>where
P: TextProcessor,
impl<'a, P> EpubFileLoader<'a, (PathBuf, Vec<(usize, Result<String, EpubLoaderError>)>), P>where
P: TextProcessor,
Sourcepub fn ignore_errors(
self,
) -> EpubFileLoader<'a, (PathBuf, Vec<(usize, String)>), P>
pub fn ignore_errors( self, ) -> EpubFileLoader<'a, (PathBuf, Vec<(usize, String)>), P>
Drops failed chapter results, retaining paths and existing chapter indices. Documents with no successful chapters remain.
let content = EpubFileLoader::<_, RawTextProcessor>::with_glob("tests/data/*.epub")?
.load_with_path()
.ignore_errors()
.by_chapter()
.ignore_errors();
for (_path, chapters) in content {
println!("{}", chapters.len())
}Source§impl<'a, T: 'a, P> EpubFileLoader<'a, Result<T, EpubLoaderError>, P>
impl<'a, T: 'a, P> EpubFileLoader<'a, Result<T, EpubLoaderError>, P>
Sourcepub fn ignore_errors(self) -> EpubFileLoader<'a, T, P>
pub fn ignore_errors(self) -> EpubFileLoader<'a, T, P>
Discards error items and yields unwrapped successful values.
Source§impl<'a, P> EpubFileLoader<'a, Result<PathBuf, EpubLoaderError>, P>
impl<'a, P> EpubFileLoader<'a, Result<PathBuf, EpubLoaderError>, P>
Sourcepub fn with_glob(
pattern: &str,
) -> Result<EpubFileLoader<'_, Result<PathBuf, EpubLoaderError>, P>, EpubLoaderError>
pub fn with_glob( pattern: &str, ) -> Result<EpubFileLoader<'_, Result<PathBuf, EpubLoaderError>, P>, EpubLoaderError>
Creates a loader over glob matches. Invalid patterns fail immediately; traversal errors are yielded during iteration.
Sourcepub fn with_dir(
directory: &str,
) -> Result<EpubFileLoader<'_, Result<PathBuf, EpubLoaderError>, P>, EpubLoaderError>
pub fn with_dir( directory: &str, ) -> Result<EpubFileLoader<'_, Result<PathBuf, EpubLoaderError>, P>, EpubLoaderError>
Creates a new loader on all entries within a directory. Entries are not filtered: a non-file entry’s path is yielded too and surfaces as an error when loaded.
Trait Implementations§
Source§impl<'a, T, P> IntoIterator for EpubFileLoader<'a, T, P>
impl<'a, T, P> IntoIterator for EpubFileLoader<'a, T, P>
Auto Trait Implementations§
impl<'a, T, P = RawTextProcessor> !RefUnwindSafe for EpubFileLoader<'a, T, P>
impl<'a, T, P = RawTextProcessor> !Send for EpubFileLoader<'a, T, P>
impl<'a, T, P = RawTextProcessor> !Sync for EpubFileLoader<'a, T, P>
impl<'a, T, P = RawTextProcessor> !UnwindSafe for EpubFileLoader<'a, T, P>
impl<'a, T, P> Freeze for EpubFileLoader<'a, T, P>
impl<'a, T, P> Unpin for EpubFileLoader<'a, T, P>
impl<'a, T, P> UnsafeUnpin for EpubFileLoader<'a, T, P>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more