Skip to content

Office backend follow-ups after 0.1.0 (from fetchkit integration) #11

Open

Description

@chaliy

These gaps came up while making markkit the default Office backend in fetchkit (everruns/fetchkit#183). They are ordered roughly by impact.

Format coverage

  • PPTX support. fetchkit's deprecated in-crate converter handled it, so fetchkit loses PPTX by default until markkit supports it.
  • XLSB support.
  • Format::from_content_type maps application/vnd.ms-excel.sheet.binary.macroenabled.12 (XLSB) to Xlsx, because the string contains ms-excel.sheet. Detect it as XLSB instead.

Correctness

  • A sheet with a single row renders as a header row with no data rows.
  • Spreadsheets have no title: Extraction.title is always None for XLSX/XLS/ODS. The title could come from the document properties (docProps/core.xml or meta.xml).
  • Output always ends with a trailing newline. Decide whether that is intended.

Safety and limits

  • max_processing_secs is in the config but never enforced, so parsing has no time budget.
  • The release profile uses panic = "abort", which makes the catch_unwind guard ineffective in markkit's own binaries.

API ergonomics for embedders

  • Make Markkit Clone and Debug. fetchkit currently wraps it in an Arc and writes its own Debug.
  • Make warnings structured (a code plus detail), not free-text code: detail strings.
  • Give errors structured fields, for example ResourceLimit { size, limit }, so callers can map them without parsing strings.
  • With default-features = false plus docx,spreadsheet, markkit still pulls in anyhow, regex, unicode-segmentation, mime, base64, serde_json and tokio. Make the ones the document path doesn't need optional.

Minor

  • An XLSX file without _rels/.rels fails inside calamine. Real files always have it, so this only affects hand-built fixtures.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions