feat(ddi): columns the model doesn't lift ride along (#160) - #164
Merged
Merged
Conversation
Every survey and choices column the model doesn't read into its own fields (convention:ddiFields liftedColumns) is an item's or choice's `columns` now, parsed from XLSForm only. The codebook carries them: - cdl:column (subject: the column) on the var / varGrp of a question or group, e.g. media::image::Deutsch (de), choice_filter, read_only - cdl:choice_column (subject: `<code> <column>`) on the first question that uses the list - cdl:row_column (subject: `<row> <column>`) on stdyDscr for note rows and rows without data ddi2xlsform writes them back. LimeSurvey is unchanged: its parser has no such columns. The Schematron uniqueness rule counts per subject on var and varGrp too. The generated forms add media (per language), read_only, choice_filter and a choice filter column. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
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.
The last of the #160 losses, apart from unregistered types (
calculate), which stay out by design.Every column the model doesn't read into its own fields now lives in
columnson an item or choice. Only the XLSForm parser fills it; the lifted columns are listed inconvention:ddiFieldsliftedColumns. Examples: media per language,choice_filter,read_only, Kobo's$kuid. The codebook carries them as follows:var/varGrp, a group'svarGrpcdl:columnmedia::image::Deutsch (de)cdl:choice_column<code> <column>stdyDscr, for note rows and rows without datacdl:row_column<row> <column>ddi2xlsformwrites them back. LimeSurvey is unchanged.Schematron: the "one note per type and language" rule on
var/varGrpnow counts per subject, so severalcdl:columnnotes are allowed.Left, per
ddi2xlsform/README.md:end_grouprowsappearancecaseTests
read_only,choice_filterand a choices filter column. All 5 properties pass at 2000 runs locally.npm run validateand the drift check pass🤖 Generated with Claude Code