feat: make ContentListMembership.numId optional for depth-only list membership - #19
Merged
Conversation
…embership OOXML drawing paragraphs carry only an outline level (a:pPr/@lvl) with no numbering identity, so a required numId forced readers of that shape to fabricate one. numId now identifies a shared numbering definition only when the source format has one (docx w:numId, ODF minted structural identity) and stays absent otherwise; level alone still carries the depth. The content-json-schema-defs.ts hand transcription drops numId from required to match, held by its existing regression test against a live z.toJSONSchema() call. Purely additive, so CONTENT_FORMAT_VERSION stays 3.
|
🎉 This PR is included in version 3.3.0 🎉 The release is available on: Your semantic-release bot 📦🚀 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of the outline-hierarchy reader work tracked in #14: OOXML drawing paragraphs carry only an outline level (
a:pPr/@lvl) — no numbering identity — so a requirednumIdwould force the pptx reader to fabricate one. The same applies to the odp reader, wheretext:listnesting inside slide text frames is structural rather than identity-bearing; ODF mints a numId only where the source format actually has a numbering definition to point at.ContentListMembership.numIdis now optional: it identifies a shared numbering definition when the source format has one (docx'sw:numId; ODF's minted structural identity) and is absent when the format carries only a depth (OOXML drawing paragraphs'a:pPr/@lvl).levelalone still carries the depth and remains required.src/content.ts—numId: z.string().optional(), with the field's comment extended to state when the identity exists and when it does not.src/content-json-schema-defs.ts— the hand-transcribed$defsfragment dropsnumIdfromrequired, matching the livez.toJSONSchema()output its regression test compares against.src/content.test.ts—{ level }withoutnumIdparses;{ numId, level }still parses;levelremains required.Purely additive, so
CONTENT_FORMAT_VERSIONstays 3.Generated by Claude Code