Skip to content

fix: Pretty print elements with intrinsic values on a single line#296

Merged
Joannis merged 1 commit into
CoreOffice:mainfrom
weppos:fix/pretty-print-intrinsic-values
Apr 9, 2026
Merged

fix: Pretty print elements with intrinsic values on a single line#296
Joannis merged 1 commit into
CoreOffice:mainfrom
weppos:fix/pretty-print-intrinsic-values

Conversation

@weppos

@weppos weppos commented Mar 31, 2026

Copy link
Copy Markdown
Contributor

This PR introduces a fix to the mentioned bug, by keeping elements with intrinsic content encoded via the empty-string CodingKey on a single line when pretty printing.

Fixes #295

Elements using the empty-string CodingKey ("") for intrinsic text
content were being pretty-printed with the value on a separate line:

    <element ref="id">
    120000.0
    </element>

This happened because the pretty printer only checked containsTextNodes,
which isn't set for intrinsic values encoded via keyed containers. Add a
check for elements whose children are all inline (key is empty) and
don't wrap named child elements, treating them the same as text nodes.
@Joannis
Joannis merged commit b2b5d72 into CoreOffice:main Apr 9, 2026
3 of 8 checks passed
weppos added a commit to weppos/uddf-swift that referenced this pull request Jul 26, 2026
…nd (#8)

XMLCoder 0.18.2 ships the upstream fix that pretty-prints elements with intrinsic values on a single line CoreOffice/XMLCoder#296, commit CoreOffice/XMLCoder@b2b5d72. That fix originated as a local hotpatch in this codebase: `UDDFWriter` post-processed the encoder's output with a regex to fold intrinsic-value-with-attribute elements like `<tankpressure ref="backgas">17000000.0</tankpressure>` back onto one line.

With the fix upstream, the workaround is redundant. This PR:

- Raises the XMLCoder dependency floor from `0.17.0` to `0.18.2`.
- Removes `collapseIntrinsicValueElements(_:)` from `UDDFWriter` and its call site.
- Removes the now-dead `prettyPrinted` stored property (the init parameter still drives `outputFormatting`).
- Updates the README dependency reference and adds a CHANGELOG entry.

The decode-side helper `decodeTrimmedIntrinsicValue` is **not** removed. The upstream fix is encoder-only; the decode helper tolerates *reading* externally authored, whitespace-padded intrinsic values, in line with the permissive-parser philosophy. Verified load-bearing: neutering it to a plain `decode` breaks `testParseAlarmTrimsFormattingWhitespace` and `testParseWaypointSensorValuesWithFormattingWhitespace`.
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.

Pretty-printed intrinsic-value elements are split across multiple lines

2 participants