@@ -567,44 +567,56 @@ private String toOptionalValue(String value) {
567
567
return "(Just " + value + ")" ;
568
568
}
569
569
570
+ private Optional <String > paramToStringMapper (final String paramName , final CodegenProperty property ) {
571
+ if (property .isEnum ) {
572
+ return Optional .of (toVarName (paramName ) + "ToString" );
573
+ } else if (property .isString || property .isBinary || property .isByteArray ) {
574
+ return Optional .empty ();
575
+ } else if (property .isBoolean ) {
576
+ return Optional .of ("(\\ val -> if val then \" true\" else \" false\" )" );
577
+ } else if (property .isDateTime ) {
578
+ return Optional .of ("DateTime.toString" );
579
+ } else if (property .isDate ) {
580
+ return Optional .of ("DateOnly.toString" );
581
+ } else if (property .isUuid ) {
582
+ return Optional .of ("Uuid.toString" );
583
+ } else if (ElmVersion .ELM_018 .equals (elmVersion )) {
584
+ return Optional .of ("toString" );
585
+ } else if (property .isInteger || property .isLong ) {
586
+ return Optional .of ("String.fromInt" );
587
+ } else if (property .isFloat || property .isDouble ) {
588
+ return Optional .of ("String.fromFloat" );
589
+ }
590
+ throw new RuntimeException ("Parameter '" + paramName + "' cannot be converted to a string. Please report the issue." );
591
+ }
592
+
593
+ private CodegenProperty paramToProperty (final CodegenParameter parameter ) {
594
+ final CodegenProperty property = new CodegenProperty ();
595
+ property .isEnum = parameter .isEnum ;
596
+ property .isString = parameter .isString ;
597
+ property .isBinary = parameter .isBinary ;
598
+ property .isByteArray = parameter .isByteArray ;
599
+ property .isBoolean = parameter .isBoolean ;
600
+ property .isDateTime = parameter .isDateTime ;
601
+ property .isDate = parameter .isDate ;
602
+ property .isUuid = parameter .isUuid ;
603
+ property .isInteger = parameter .isInteger ;
604
+ property .isLong = parameter .isLong ;
605
+ property .isFloat = parameter .isFloat ;
606
+ property .isDouble = parameter .isDouble ;
607
+ return property ;
608
+ }
609
+
570
610
private String paramToString (final String prefix , final CodegenParameter param , final boolean useMaybe , final String maybeMapResult ) {
571
611
final String paramName = (ElmVersion .ELM_018 .equals (elmVersion ) ? "" : prefix + "." ) + param .paramName ;
572
612
if (!useMaybe ) {
573
613
param .required = true ;
574
614
}
575
615
576
- String mapFn = null ;
577
- if (param .isString || param .isBinary || param .isByteArray ) {
578
- mapFn = "" ;
579
- } else if (param .isBoolean ) {
580
- mapFn = "(\\ val -> if val then \" true\" else \" false\" )" ;
581
- } else if (param .isDateTime ) {
582
- mapFn = "DateTime.toString" ;
583
- } else if (param .isDate ) {
584
- mapFn = "DateOnly.toString" ;
585
- } else if (param .isUuid ) {
586
- mapFn = "Uuid.toString" ;
587
- } else if (ElmVersion .ELM_018 .equals (elmVersion )) {
588
- mapFn = "toString" ;
589
- } else if (param .isInteger || param .isLong ) {
590
- mapFn = "String.fromInt" ;
591
- } else if (param .isFloat || param .isDouble ) {
592
- mapFn = "String.fromFloat" ;
593
- } else if (param .isListContainer ) {
594
- // TODO duplicate ALL types from parameter to property...
595
- if (param .items .isString || param .items .isUuid || param .items .isBinary || param .items .isByteArray ) {
596
- mapFn = "String.join \" ,\" " ;
597
- }
598
- }
599
- if (mapFn == null ) {
600
- throw new RuntimeException ("Parameter '" + param .paramName + "' cannot be converted to a string. Please report the issue." );
601
- }
616
+ final String mapFn = param .isListContainer
617
+ ? "(String.join \" ,\" " + paramToStringMapper (param .paramName , param .items ).map (mapper -> " << List.map " + mapper ).orElse ("" ) + ")"
618
+ : paramToStringMapper (param .paramName , paramToProperty (param )).orElse ("" );
602
619
603
- if (param .isListContainer ) {
604
- if (!param .required ) {
605
- mapFn = "(" + mapFn + ")" ;
606
- }
607
- }
608
620
String mapResult = "" ;
609
621
if (maybeMapResult != null ) {
610
622
if ("" .equals (mapFn )) {
0 commit comments