Skip to content

feat(ddi)!: empty groups, end_group cells, appearance case, every setting (#160) - #165

Merged
jstet merged 1 commit into
mainfrom
feat/ddi-lossless-3
Sep 27, 2026
Merged

jstet merged 1 commit into
mainfrom
feat/ddi-lossless-3

Conversation

@jstet

@jstet jstet commented Sep 27, 2026

Copy link
Copy Markdown
Member

This PR closes the last #160 losses that aren't just spelling.

was lost now
a group with nothing the codebook has a section varGrp with no members, placed by cdl:position
an end_group row's cells (name, $kuid) cdl:end_column on the group's varGrp
the case of appearance (Multiline) cdl:appearance as authored; the model and readers lowercase it
settings with a value per language, boolean settings a cdl:setting per <key>::<lang>; a boolean as its text

What stays lost, per ddi2xlsform/README.md:

  • unregistered types (calculate), by design
  • cell spellings: whitespace in the type cell, begin group written with a space, a boolean setting coming back as text

Tests

  • The generated forms now include empty groups, end_group $kuid and capitalized appearances. All 5 properties pass at 5000 runs locally.
  • New unit tests cover each of the four.
  • vitest: 1473 passed
  • pytest validation + codegen: 150 passed, 4 xfailed
  • worker gradle test, npm run validate and the drift check pass

Breaking

cdl:appearance is no longer lowercased.

🤖 Generated with Claude Code

…ting (#160)

- A group with nothing the codebook has is a section varGrp without
  members, placed by cdl:position.
- An end_group row's cells (name, $kuid) are cdl:end_column notes on the
  group's varGrp.
- cdl:appearance holds the cell as authored (Multiline); the model and
  readers use it lowercased.
- A setting per language ({ lang: text }) is one cdl:setting per
  `<key>::<lang>`; a boolean setting is carried as its text.

What stays lost: unregistered types (calculate) by design, and cell
spellings (type-cell whitespace, `begin group`, a boolean setting as text).

BREAKING CHANGE: cdl:appearance is no longer lowercased.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@jstet
jstet merged commit 0408362 into main Sep 27, 2026
4 checks passed
@jstet
jstet deleted the feat/ddi-lossless-3 branch September 27, 2026 20:22
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.

1 participant