Skip to content

Commit 600a593

Browse files
add HashMap values conversion (#33)
1 parent ea6aaa9 commit 600a593

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@codama/renderers-vixen-parser": patch
3+
---
4+
5+
- Add HashMap values conversion when needed

src/getRenderMapVisitor.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,19 @@ function getOptionTypeTransform(
237237
return returnTransform;
238238
}
239239

240+
function getMapValueTransform(valueType: TypeNode): string {
241+
switch (valueType.kind) {
242+
case 'definedTypeLinkNode':
243+
return '.into_proto()';
244+
case 'publicKeyTypeNode':
245+
return '.to_string()';
246+
case 'numberTypeNode':
247+
return getNumberTypeTransform(valueType);
248+
default:
249+
return '';
250+
}
251+
}
252+
240253
function getTransform(
241254
type: TypeNode,
242255
name: string,
@@ -270,6 +283,11 @@ function getTransform(
270283
case 'sizePrefixTypeNode':
271284
return getArrayTypeTransform(type.type, typeName, idlDefinedTypes);
272285

286+
case 'mapTypeNode': {
287+
const valueTransform = getMapValueTransform(type.value);
288+
return `self.${typeName}.into_iter().map(|(k, v)| (k, v${valueTransform})).collect()`;
289+
}
290+
273291
default:
274292
return `self.${typeName}`;
275293
}

0 commit comments

Comments
 (0)