Skip to content

Refactor to streaming BinaryPackage/XmlPackage parsers (#33) - #34

Merged
fanfeilong merged 1 commit into
masterfrom
cursor/streaming-package-parser-f4db
Sep 23, 2026
Merged

fanfeilong merged 1 commit into
masterfrom
cursor/streaming-package-parser-f4db

Conversation

@fanfeilong

@fanfeilong fanfeilong commented Sep 23, 2026 •

Copy link
Copy Markdown
Collaborator

Closes #33

Intent

The previous package/parser layer treated the file container as the package and batch-loaded a DataSet. The intended design is:

Package (entity) Parser (streaming)
Binary BinaryPackage (BIFF record) BinaryPackageParser
XML XmlPackage (row/cell/merge/hyperlink/…) XmlPackageParser

Parsers stream-parse and stream-emit packages; readers consume those streams.

Changes

  • Removed container-oriented IExcelPackage / StreamPackage / ExcelPackageParserFactory / batch *PackageParser.Parse→DataSet
  • Added streaming IPackageParser<T>, BinaryPackage + BinaryPackageParser, XmlPackage hierarchy + XmlPackageParser
  • ExcelBinaryReader / ExcelOpenXmlReader consume package streams; ZipWorker is IO only again
  • CSV remains on CsvReader (outside binary/xml symmetry)

Verify

  • src/test.sh — all cases Done! (exit 0)
  • Spot-checked hyperlinks (无法生成md文件 #8), CSV, and MultiMarkdown merge output
Open in Web Open in Cursor 

Replace the inverted container-as-package layer with the intended
four-group model: BinaryPackage + BinaryPackageParser and XmlPackage +
XmlPackageParser stream semantic units; readers consume those streams
to build DataSet. CSV stays on CsvReader.

Co-authored-by: Fan Feilong <fanfeilong@gmail.com>
@fanfeilong
fanfeilong marked this pull request as ready for review September 23, 2026 15:56
@fanfeilong
fanfeilong merged commit 241739d into master Sep 23, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Refactor package/parser to streaming BinaryPackage + XmlPackage model

2 participants