feat(ddi)!: cells as authored, unlabelled groups, messages without a constraint (#160) - #163
Merged
Merged
Conversation
…constraint (#160) Closes the small losses #162 left: - constraint_message is kept without a constraint - cdl:required holds the cell as authored (TRUE, true), yes by default - cdl:parameters holds the cell as authored, guidance_hint included (ivuInstr still has it), not only the parameters DDI has no element for - cdl:no_label marks a group without a label (its txt stays its name) - notes whose joined preQTxt can't be split at blank lines (a blank line in one, a language only some have) keep their own text in cdl:row_label - the form model's languages come from every text column, not only label: a language only a hint has is no longer dropped The generated forms cover all of these. BREAKING CHANGE: cdl:parameters now includes a guidance_hint, and cdl:constraint_message appears without a constraint. ddi2xlsform gives back a guidance_hint inside parameters as it was, which pyxform rejects when it has spaces (hints_survey, as its source). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This was referenced Sep 27, 2026
jstet
added a commit
that referenced
this pull request
Sep 27, 2026
…ts column (#166) qwacback's old DDI → XLSForm export put the guidance hint into `parameters` as `guidance_hint=<text>`. pyxform reads that cell as space-separated key=value pairs, so a hint with spaces makes the form invalid. Since #163 ddi2xlsform gives parameters back as authored, and with it that invalid cell, which Kobo refuses. The XLSForm writer now moves such a hint (its text has whitespace) to the guidance_hint column. One without whitespace stays in parameters, so a valid form still comes back as written. hints_survey's ddi2xlsform.json is valid XLSForm again; its source stays an expected pyxform failure. 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.
Follow-up to #162 (#160). It closes the small losses that PR left.
constraint_messagewithout aconstraintcdl:constraint_messagenote is written anywayrequiredspelling (TRUE)cdl:requiredholds the cell as authored;yeswhen there is no cellguidance_hintinsideparameterscdl:parametersholds the cell as authored;ivuInstrstill has the hintcdl:no_labelnote;txtstays its name, for readers that show onecdl:row_label, only when neededlabelThe generated forms now include:
requiredspellingsI ran 2000 per property locally.
Left, per
ddi2xlsform/README.md:calculate), which stay out by designBreaking
cdl:parametersnow includes aguidance_hint.cdl:constraint_messagenow appears without a constraint.ddi2xlsformgives aguidance_hintinsideparametersback as it was. pyxform rejects that when the hint has spaces. Forhints_surveyit rejects the source too, so itsddi2xlsform.jsonis now xfail with the same reason.Checks
npm run validateand the drift check pass🤖 Generated with Claude Code