@@ -92,7 +92,7 @@ class Renderer extends ValueRenderer {
9292 /// If [value] is a [Typed] or [Dynamic] object, its properties are rendered
9393 /// as top-level Starlark statements. Otherwise, the value is rendered directly.
9494 function renderDocument (value : Any ): String =
95- if (value is Typed || value is Dynamic)
95+ if (value is Typed | Dynamic)
9696 renderModuleObject(value)
9797 else
9898 renderValue(value)
@@ -103,14 +103,15 @@ class Renderer extends ValueRenderer {
103103
104104 local convertersMap : Map = converters.toMap()
105105
106- local function getConvertersForValue (value : Any ): List = new Listing {
107- when (convertersMap.containsKey(value.getClass())) {
108- convertersMap[value.getClass()]
109- }
110- when (convertersMap.containsKey("*" )) {
111- convertersMap["*" ]
112- }
113- }.toList()
106+ local function getConvertersForValue (value : Any ): List =
107+ new Listing {
108+ when (convertersMap.containsKey(value.getClass())) {
109+ convertersMap[value.getClass()]
110+ }
111+ when (convertersMap.containsKey("*" )) {
112+ convertersMap["*" ]
113+ }
114+ }.toList()
114115
115116 local function applyConverters (value : Any ): Any =
116117 if (value == null )
@@ -140,36 +141,36 @@ class Renderer extends ValueRenderer {
140141 if (value == null )
141142 "None"
142143 else if (value is RenderDirective)
143- ( value as RenderDirective ) .text
144+ value.text
144145 else if (value is Boolean)
145- if (value as Boolean ) "True" else "False"
146- else if (value is Int || value is Float)
146+ if (value) "True" else "False"
147+ else if (value is Int | Float)
147148 "\(value) "
148149 else if (value is String)
149- renderString(value as String )
150+ renderString(value)
150151 else if (value is Pair)
151- renderPair(value as Pair , depth)
152+ renderPair(value, depth)
152153 else if (value is Set)
153- "set(\(renderList(( value as Set) .toList(), depth)))"
154- else if (value is List || value is Listing)
154+ "set(\(renderList(value.toList() , depth)))"
155+ else if (value is List | Listing)
155156 renderList(toListValue(value), depth)
156- else if (value is Map || value is Mapping)
157+ else if (value is Map | Mapping)
157158 renderDict(toMapValue(value), depth)
158159 else if (value is Dynamic)
159- renderDynamic(value as Dynamic , depth)
160+ renderDynamic(value, depth)
160161 else if (value is Typed)
161- let (t = value as Typed )
162- renderTypedFunctionCall(t.getClass().simpleName, t.toMap(), depth)
162+ renderTypedFunctionCall(value.getClass().simpleName, value.toMap(), depth)
163163 else
164- throw ("Cannot render value of type `\(value.getClass() .simpleName)` as Starlark. Value: \(value) " )
164+ throw (
165+ "Cannot render value of type `\(value.getClass() .simpleName)` as Starlark. Value: \(value) "
166+ )
165167
166168 // --- Type coercions ---
167169
168- local function toListValue (value : List| Listing ): List =
169- if (value is List) value as List else ( value as Listing ) .toList()
170+ local function toListValue (value : List | Listing ): List =
171+ if (value is List) value else value.toList()
170172
171- local function toMapValue (value : Map|Mapping ): Map =
172- if (value is Map) value as Map else (value as Mapping ).toMap()
173+ local function toMapValue (value : Map | Mapping ): Map = if (value is Map) value else value.toMap()
173174
174175 // --- List / Listing → [...] ---
175176
@@ -185,19 +186,26 @@ class Renderer extends ValueRenderer {
185186
186187 local function renderDict (entries : Map , depth : Int ): String =
187188 let (filtered = if (omitNullProperties) entries.filter((_, v) -> v != null ) else entries)
188- if (filtered.isEmpty)
189- "{}"
190- else if (isInline)
191- "{\(new Listing { for (k, v in filtered) { " \(renderDictKey(k)): \(renderAny(v, depth))" } }.toList().join(" , "))}"
192- else
193- let (lines = new Listing { for (k , v in filtered) { "\(indentStr(depth + 1) )\(renderDictKey(k) ): \(renderAny(v, depth + 1) )" } }.toList())
194- "{\n\(lines.join(",\n") ),\n\(indentStr(depth) )}"
189+ if (filtered.isEmpty)
190+ "{}"
191+ else if (isInline)
192+ "{\(new Listing { for (k, v in filtered) { " \(renderDictKey(k)): \(renderAny(v, depth))" } }.join(" , "))}"
193+ else
194+ let (
195+ lines =
196+ new Listing {
197+ for (k , v in filtered) {
198+ "\(indentStr(depth + 1) )\(renderDictKey(k) ): \(renderAny(v, depth + 1) )"
199+ }
200+ }.toList()
201+ )
202+ "{\n\(lines.join(",\n") ),\n\(indentStr(depth) )}"
195203
196204 local function renderDictKey (key : Any ): String =
197205 if (key is String)
198- renderString(key as String )
206+ renderString(key)
199207 else if (key is RenderDirective)
200- ( key as RenderDirective ) .text
208+ key.text
201209 else
202210 throw ("Cannot render non-string dict key: \(key) " )
203211
@@ -222,33 +230,47 @@ class Renderer extends ValueRenderer {
222230 local function renderFunctionCall (callName : String , props : Map , depth : Int ): String =
223231 let (filtered = if (omitNullProperties) props.filter((_, v) -> v != null ) else props)
224232 let (sorted = filtered.entries.sortBy((e) -> "\(e.first) " ))
225- if (filtered.isEmpty)
226- "\(callName) ()"
227- else if (isInline)
228- "\(callName) (\(new Listing { for (e in sorted) { " \(e.first) = \(renderAny(e.second, depth))" } }.toList().join(" , ")))"
229- else
230- let (lines = new Listing { for (e in sorted) { "\(indentStr(depth + 1) )\(e.first) = \(renderAny(e.second, depth + 1) )" } }.toList())
231- "\(callName) (\n\(lines.join(",\n") ),\n\(indentStr(depth) ))"
233+ if (filtered.isEmpty)
234+ "\(callName) ()"
235+ else if (isInline)
236+ "\(callName) (\(new Listing { for (e in sorted) { " \(e.first) = \(renderAny(e.second, depth))" } }.join(" , ")))"
237+ else
238+ let (
239+ lines =
240+ new Listing {
241+ for (e in sorted) {
242+ "\(indentStr(depth + 1) )\(e.first) = \(renderAny(e.second, depth + 1) )"
243+ }
244+ }.toList()
245+ )
246+ "\(callName) (\n\(lines.join(",\n") ),\n\(indentStr(depth) ))"
232247
233248 local function renderTypedFunctionCall (callName : String , props : Map , depth : Int ): String =
234249 let (filtered = if (omitNullProperties) props.filter((_, v) -> v != null ) else props)
235250 let (sorted = filtered.entries.sortBy((e) -> if ("\(e.first) " == "name" ) "" else "\(e.first) " ))
236- if (filtered.isEmpty)
237- "\(callName) ()"
238- else if (isInline)
239- "\(callName) (\(new Listing { for (e in sorted) { " \(e.first) = \(renderAny(e.second, depth))" } }.toList().join(" , ")))"
240- else
241- let (lines = new Listing { for (e in sorted) { "\(indentStr(depth + 1) )\(e.first) = \(renderAny(e.second, depth + 1) )" } }.toList())
242- "\(callName) (\n\(lines.join(",\n") ),\n\(indentStr(depth) ))"
251+ if (filtered.isEmpty)
252+ "\(callName) ()"
253+ else if (isInline)
254+ "\(callName) (\(new Listing { for (e in sorted) { " \(e.first) = \(renderAny(e.second, depth))" } }.join(" , ")))"
255+ else
256+ let (
257+ lines =
258+ new Listing {
259+ for (e in sorted) {
260+ "\(indentStr(depth + 1) )\(e.first) = \(renderAny(e.second, depth + 1) )"
261+ }
262+ }.toList()
263+ )
264+ "\(callName) (\n\(lines.join(",\n") ),\n\(indentStr(depth) ))"
243265
244266 // --- Module-level / document-level rendering ---
245267
246- local function renderModuleObject (value : Typed| Dynamic ): String =
268+ local function renderModuleObject (value : Typed | Dynamic ): String =
247269 let (props = value.toMap())
248270 let (filtered = if (omitNullProperties) props.filter((_, v) -> v != null ) else props)
249- filtered.entries
250- .map((e) -> renderTopLevelStatement(e.first.toString(), applyConverters(e.second)))
251- .join("\n " )
271+ filtered.entries
272+ .map((e) -> renderTopLevelStatement(e.first.toString(), applyConverters(e.second)))
273+ .join("\n " )
252274
253275 local function renderTopLevelStatement (name : String , value : Any ): String =
254276 if (value is Typed && ! (value is RenderDirective))
@@ -261,16 +283,21 @@ class Renderer extends ValueRenderer {
261283 let (filtered = if (omitNullProperties) props.filter((_, v) -> v != null ) else props)
262284 let (withoutName = filtered.filter((k, _) -> k != "name" ))
263285 let (sortedRest = withoutName.entries.sortBy((e) -> "\(e.first) " ))
264- if (isInline)
265- let (inlineArgs =
266- List("name = \"\(name)\" " ) +
267- new Listing { for (e in sortedRest) { "\(e.first) = \(renderAny(e.second, 0) )" } }.toList()
268- )
269- "\(value.getClass() .simpleName)(\(inlineArgs.join(", ") ))\n "
270- else
271- let (lines =
272- List("\(indent) name = \"\(name)\" " ) +
273- new Listing { for (e in sortedRest) { "\(indent)\(e.first) = \(renderAny(e.second, 1) )" } }.toList()
274- )
275- "\(value.getClass() .simpleName)(\n\(lines.join(",\n") ),\n )\n "
286+ if (isInline)
287+ let (
288+ inlineArgs =
289+ List("name = \"\(name)\" " )
290+ + new Listing { for (e in sortedRest) { "\(e.first) = \(renderAny(e.second, 0) )" } }
291+ .toList()
292+ )
293+ "\(value.getClass() .simpleName)(\(inlineArgs.join(", ") ))\n "
294+ else
295+ let (
296+ lines =
297+ List("\(indent) name = \"\(name)\" " )
298+ + new Listing {
299+ for (e in sortedRest) { "\(indent)\(e.first) = \(renderAny(e.second, 1) )" }
300+ }.toList()
301+ )
302+ "\(value.getClass() .simpleName)(\n\(lines.join(",\n") ),\n )\n "
276303}
0 commit comments