SPICE-0024: Annotation converters (#1333)

This enables defining declarative key and/or value transformations in
cases where neither `Class`- nor path-based converters can be applied
gracefully. It is also the only way to express transforming the
resulting property names in `Typed` objects without applying a converter
to the entire containing type, which is cumbersome at best.

SPICE: https://github.com/apple/pkl-evolution/pull/26
This commit is contained in:
Jen Basch
2026-01-23 12:44:41 -08:00
committed by GitHub
parent ed0cad668f
commit 73264e8fd1
51 changed files with 773 additions and 141 deletions
@@ -0,0 +1,19 @@
class LineComment extends ConvertProperty {
text: String
valuePrefix: String = ""
prefix: String
suffix: String = ""
render = (prop, renderer) ->
Pair(prop.key, new RenderDirective {
text =
List(
valuePrefix,
(renderer as ValueRenderer).renderValue(prop.value),
prefix,
outer.text,
suffix,
).join("")
})
}