ebook_parser library
Parse EPUB and FB2 ebooks into one shared document model — with lazy
sentence and word segmentation, a cheap metadata-only path, and
transparent .fb2.zip handling.
The entry point is bookParserFor: pass the file path and the bytes you
hold, get back an IBookParser or null. Everything a parse returns is
the shared model rooted at BookDocument; expected failures arrive as
ParseErr, never as exceptions.
JSON serialization is a separate opt-in import:
package:ebook_parser/serialization.dart.
Classes
- ArchiveContent
- What a picked file turned out to be.
- Block
- A content block: exactly one of ParagraphBlock, HeadingBlock, or ImageBlock.
- BookDocument
- A fully parsed book: metadata plus an ordered list of chapters.
- BookMetadata
-
Cheap-to-extract book metadata: what
parseMetadatareturns and whatparseputs on the document, so the two paths cannot answer differently. - Chapter
- One chapter of a BookDocument.
- EpubArchive
- A zip that is the book: EPUB. The EPUB parser reads the container itself, so unwrapping it would be undoing the format.
- HeadingBlock
- A heading line inside the flow.
- IBookParser
- Parses a book file's bytes into the shared document model.
- ImageBlock
- An inline or illustration image.
- ImageData
- Image bytes exactly as the file stores them, plus the media type it declared.
- NoBookInside
- A zip with nothing in it we can read.
- NotAnArchive
- Not a zip — an ordinary FB2 (or anything else); parse it as it is.
- ParagraphBlock
- A paragraph of body text.
-
ParseErr<
T> - A failed parse carrying its failure.
- ParseFailure
- Describes a failed parse.
-
ParseOk<
T> - A successful parse carrying its value.
-
ParseResult<
T> - The result of a parse: ParseOk with a value, or ParseErr with a ParseFailure.
- RuleBasedSegmenter
- The built-in TextSegmenter: rule-based, decided by writing system rather than by language.
- Sentence
- A sentence span within its ParagraphBlock.text.
- SeveralBooksInside
- A zip holding several books. Refused rather than guessed: picking the first one silently imports a book nobody chose.
- TextSegmenter
- Splits one paragraph's text into Sentences, each carrying its Words, with offsets relative to that paragraph's text.
- Word
- A single word span within its ParagraphBlock.text.
- WrappedBook
- A zip holding exactly one book file, already extracted.
Enums
- ParseFailureKind
- Why a parse failed.
Extensions
- BookDocumentSample on BookDocument
- Body sampling for language detection.
Constants
-
importableBookExtensions
→ const List<
String> - Extensions a file picker or an "Open with" filter should accept.
-
supportedBookExtensions
→ const List<
String> - Formats the package can parse (lowercase, no dot).
Functions
-
bookParserFor(
String filePath, Uint8List bytes) → IBookParser? -
Returns the parser for the book at
filePathwith contentbytes, ornullwhen no parser matches — an unrecognised file is an expected outcome, not an error. -
inspectBookArchive(
Uint8List bytes) → ArchiveContent -
Looks inside
bytesand reports what to import. -
isZipArchive(
Uint8List bytes) → bool -
Whether
bytesstarts with the zip magicPK\x03\x04. -
normalizeLanguageCode(
String? declared, {required String fallback}) → String -
Reduces
declaredto an ISO-639-1 code, or returns the normalizedfallbackwhen it does not reduce to one.