mirror of
https://github.com/OpenAPITools/openapi-generator.git
synced 2025-07-04 06:30:52 +00:00
[elm] Fix duplicate coder names (#5100)
* [elm] Add signature to enum variants * [elm] Fix field encoders/decoders
This commit is contained in:
parent
71128f712c
commit
7e16a1f58c
@ -17,11 +17,12 @@
|
|||||||
|
|
||||||
package org.openapitools.codegen.languages;
|
package org.openapitools.codegen.languages;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableMap;
|
||||||
|
import com.samskivert.mustache.Mustache;
|
||||||
|
import com.samskivert.mustache.Mustache.Lambda;
|
||||||
|
import com.samskivert.mustache.Template;
|
||||||
import io.swagger.v3.oas.models.media.ArraySchema;
|
import io.swagger.v3.oas.models.media.ArraySchema;
|
||||||
import io.swagger.v3.oas.models.media.Schema;
|
import io.swagger.v3.oas.models.media.Schema;
|
||||||
import io.swagger.v3.oas.models.responses.ApiResponse;
|
|
||||||
import org.apache.commons.io.FilenameUtils;
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
import org.openapitools.codegen.*;
|
import org.openapitools.codegen.*;
|
||||||
import org.openapitools.codegen.meta.features.*;
|
import org.openapitools.codegen.meta.features.*;
|
||||||
import org.openapitools.codegen.utils.ModelUtils;
|
import org.openapitools.codegen.utils.ModelUtils;
|
||||||
@ -29,7 +30,8 @@ import org.slf4j.Logger;
|
|||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.text.Collator;
|
import java.io.IOException;
|
||||||
|
import java.io.Writer;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@ -156,6 +158,12 @@ public class ElmClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
supportingFiles.add(new SupportingFile("README.mustache", "", "README.md"));
|
supportingFiles.add(new SupportingFile("README.mustache", "", "README.md"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected ImmutableMap.Builder<String, Lambda> addMustacheLambdas() {
|
||||||
|
return super.addMustacheLambdas()
|
||||||
|
.put("removeWhitespace", new RemoveWhitespaceLambda());
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String escapeUnsafeCharacters(String input) {
|
public String escapeUnsafeCharacters(String input) {
|
||||||
return input.replace("*/", "*_/").replace("/*", "/_*");
|
return input.replace("*/", "*_/").replace("/*", "/_*");
|
||||||
@ -425,4 +433,11 @@ public class ElmClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
}
|
}
|
||||||
return super.getTypeDeclaration(p);
|
return super.getTypeDeclaration(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static class RemoveWhitespaceLambda implements Mustache.Lambda {
|
||||||
|
@Override
|
||||||
|
public void execute(final Template.Fragment fragment, final Writer writer) throws IOException {
|
||||||
|
writer.write(fragment.execute().replaceAll("\\s+", ""));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ type {{^paramName}}{{classname}}{{/paramName}}{{enumName}}
|
|||||||
{{/allowableValues}}
|
{{/allowableValues}}
|
||||||
|
|
||||||
|
|
||||||
|
{{#lambda.camelcase}}{{^paramName}}{{classname}}{{/paramName}}{{enumName}}{{/lambda.camelcase}}Variants : List {{^paramName}}{{classname}}{{/paramName}}{{enumName}}
|
||||||
{{#lambda.camelcase}}{{^paramName}}{{classname}}{{/paramName}}{{enumName}}{{/lambda.camelcase}}Variants =
|
{{#lambda.camelcase}}{{^paramName}}{{classname}}{{/paramName}}{{enumName}}{{/lambda.camelcase}}Variants =
|
||||||
{{#allowableValues}}
|
{{#allowableValues}}
|
||||||
{{#enumVars}}
|
{{#enumVars}}
|
||||||
|
@ -1 +1,17 @@
|
|||||||
{{#isDateTime}}Api.Time.dateTimeDecoder{{/isDateTime}}{{#isDate}}Api.Time.dateDecoder{{/isDate}}{{#isByteArray}}Json.Decode.string{{/isByteArray}}{{#isBinary}}Json.Decode.string{{/isBinary}}{{#isString}}{{^isEnum}}{{^isUuid}}Json.Decode.string{{/isUuid}}{{/isEnum}}{{/isString}}{{#isInteger}}Json.Decode.int{{/isInteger}}{{#isLong}}Json.Decode.int{{/isLong}}{{#isNumber}}Json.Decode.float{{/isNumber}}{{#isFloat}}Json.Decode.float{{/isFloat}}{{#isDouble}}Json.Decode.float{{/isDouble}}{{#isBoolean}}Json.Decode.bool{{/isBoolean}}{{#isUuid}}Uuid.decoder{{/isUuid}}{{^isString}}{{^isNumeric}}{{^isBoolean}}{{#isDefault}}Api.Data.{{/isDefault}}{{#lambda.camelcase}}{{#isEnum}}{{classname}}{{enumName}}{{/isEnum}}{{^isEnum}}{{dataType}}{{/isEnum}}{{/lambda.camelcase}}Decoder{{/isBoolean}}{{/isNumeric}}{{/isString}}
|
{{#lambda.removeWhitespace}}
|
||||||
|
{{#isDateTime}}Api.Time.dateTimeDecoder{{/isDateTime}}
|
||||||
|
{{#isDate}}Api.Time.dateDecoder{{/isDate}}
|
||||||
|
{{#isByteArray}}Json.Decode.string{{/isByteArray}}
|
||||||
|
{{#isBinary}}Json.Decode.string{{/isBinary}}
|
||||||
|
{{#isString}}{{^isEnum}}{{^isUuid}}Json.Decode.string{{/isUuid}}{{/isEnum}}{{/isString}}
|
||||||
|
{{#isInteger}}Json.Decode.int{{/isInteger}}
|
||||||
|
{{#isLong}}Json.Decode.int{{/isLong}}
|
||||||
|
{{#isNumber}}Json.Decode.float{{/isNumber}}
|
||||||
|
{{#isFloat}}Json.Decode.float{{/isFloat}}
|
||||||
|
{{#isDouble}}Json.Decode.float{{/isDouble}}
|
||||||
|
{{#isBoolean}}Json.Decode.bool{{/isBoolean}}
|
||||||
|
{{#isUuid}}Uuid.decoder{{/isUuid}}
|
||||||
|
{{^isDateTime}}{{^isDate}}{{^isByteArray}}{{^isBinary}}{{^isString}}{{^isNumeric}}{{^isBoolean}}{{^isUuid}}
|
||||||
|
{{#isDefault}}Api.Data.{{/isDefault}}{{#lambda.camelcase}}{{#isEnum}}{{classname}}{{enumName}}{{/isEnum}}{{^isEnum}}{{dataType}}{{/isEnum}}{{/lambda.camelcase}}Decoder
|
||||||
|
{{/isUuid}}{{/isBoolean}}{{/isNumeric}}{{/isString}}{{/isBinary}}{{/isByteArray}}{{/isDate}}{{/isDateTime}}
|
||||||
|
{{/lambda.removeWhitespace}}
|
@ -1 +1,17 @@
|
|||||||
{{#isDateTime}}Api.Time.encodeDateTime{{/isDateTime}}{{#isDate}}Api.Time.encodeDate{{/isDate}}{{#isByteArray}}Json.Encode.string{{/isByteArray}}{{#isBinary}}Json.Decode.string{{/isBinary}}{{#isString}}{{^isEnum}}{{^isUuid}}Json.Encode.string{{/isUuid}}{{/isEnum}}{{/isString}}{{#isInteger}}Json.Encode.int{{/isInteger}}{{#isLong}}Json.Encode.int{{/isLong}}{{#isNumber}}Json.Encode.float{{/isNumber}}{{#isFloat}}Json.Encode.float{{/isFloat}}{{#isDouble}}Json.Encode.float{{/isDouble}}{{#isBoolean}}Json.Encode.bool{{/isBoolean}}{{#isUuid}}Uuid.encode{{/isUuid}}{{^isString}}{{^isNumeric}}{{^isBoolean}}{{#lambda.camelcase}}encode{{#isEnum}}{{classname}}{{enumName}}{{/isEnum}}{{^isEnum}}{{dataType}}{{/isEnum}}{{/lambda.camelcase}}{{/isBoolean}}{{/isNumeric}}{{/isString}}
|
{{#lambda.removeWhitespace}}
|
||||||
|
{{#isDateTime}}Api.Time.encodeDateTime{{/isDateTime}}
|
||||||
|
{{#isDate}}Api.Time.encodeDate{{/isDate}}
|
||||||
|
{{#isByteArray}}Json.Encode.string{{/isByteArray}}
|
||||||
|
{{#isBinary}}Json.Decode.string{{/isBinary}}
|
||||||
|
{{#isString}}{{^isEnum}}{{^isUuid}}Json.Encode.string{{/isUuid}}{{/isEnum}}{{/isString}}
|
||||||
|
{{#isInteger}}Json.Encode.int{{/isInteger}}
|
||||||
|
{{#isLong}}Json.Encode.int{{/isLong}}
|
||||||
|
{{#isNumber}}Json.Encode.float{{/isNumber}}
|
||||||
|
{{#isFloat}}Json.Encode.float{{/isFloat}}
|
||||||
|
{{#isDouble}}Json.Encode.float{{/isDouble}}
|
||||||
|
{{#isBoolean}}Json.Encode.bool{{/isBoolean}}
|
||||||
|
{{#isUuid}}Uuid.encode{{/isUuid}}
|
||||||
|
{{^isDateTime}}{{^isDate}}{{^isByteArray}}{{^isBinary}}{{^isString}}{{^isNumeric}}{{^isBoolean}}{{^isUuid}}
|
||||||
|
{{#lambda.camelcase}}encode{{#isEnum}}{{classname}}{{enumName}}{{/isEnum}}{{^isEnum}}{{dataType}}{{/isEnum}}{{/lambda.camelcase}}
|
||||||
|
{{/isUuid}}{{/isBoolean}}{{/isNumeric}}{{/isString}}{{/isBinary}}{{/isByteArray}}{{/isDate}}{{/isDateTime}}
|
||||||
|
{{/lambda.removeWhitespace}}
|
@ -33,7 +33,7 @@ import Uuid exposing (Uuid){{/includeUuid}}
|
|||||||
{-| {{{notes}}}
|
{-| {{{notes}}}
|
||||||
-}
|
-}
|
||||||
{{/notes}}
|
{{/notes}}
|
||||||
{{operationId}} : {{#allParams}}{{^required}}Maybe {{/required}}{{#isListContainer}}List {{/isListContainer}}{{#datatypeWithEnum}}{{.}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{#isModel}}Api.Data.{{/isModel}}{{dataType}}{{/datatypeWithEnum}} -> {{/allParams}}Api.Request {{^responses}}(){{/responses}}{{#responses}}{{#-first}}{{^dataType}}(){{/dataType}}{{#isMapContainer}}(Dict.Dict String {{/isMapContainer}}{{#isListContainer}}(List {{/isListContainer}}{{^primitiveType}}Api.Data.{{/primitiveType}}{{#items}}{{#isModel}}Api.Data.{{/isModel}}{{/items}}{{dataType}}{{#isListContainer}}){{/isListContainer}}{{#isMapContainer}}){{/isMapContainer}}{{/-first}}{{/responses}}
|
{{operationId}} : {{#allParams}}{{^required}}Maybe {{/required}}{{#isListContainer}}List {{/isListContainer}}{{#datatypeWithEnum}}{{.}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{#isModel}}Api.Data.{{/isModel}}{{dataType}}{{/datatypeWithEnum}} -> {{/allParams}}Api.Request {{^responses}}(){{/responses}}{{#responses}}{{#-first}}{{^dataType}}(){{/dataType}}{{#isMapContainer}}(Dict.Dict String {{/isMapContainer}}{{#isListContainer}}(List {{/isListContainer}}{{^primitiveType}}{{^isUuid}}Api.Data.{{/isUuid}}{{/primitiveType}}{{#items}}{{#isModel}}Api.Data.{{/isModel}}{{/items}}{{dataType}}{{#isListContainer}}){{/isListContainer}}{{#isMapContainer}}){{/isMapContainer}}{{/-first}}{{/responses}}
|
||||||
{{operationId}}{{#allParams}} {{>paramName}}{{/allParams}} =
|
{{operationId}}{{#allParams}} {{>paramName}}{{/allParams}} =
|
||||||
Api.request
|
Api.request
|
||||||
"{{httpMethod}}"
|
"{{httpMethod}}"
|
||||||
|
@ -97,6 +97,22 @@ paths:
|
|||||||
responses:
|
responses:
|
||||||
"200":
|
"200":
|
||||||
description: Default response
|
description: Default response
|
||||||
|
/uuid:
|
||||||
|
get:
|
||||||
|
parameters:
|
||||||
|
- name: value
|
||||||
|
in: query
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
format: uuid
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: Default response
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
format: uuid
|
||||||
components:
|
components:
|
||||||
schemas:
|
schemas:
|
||||||
Absent:
|
Absent:
|
||||||
|
@ -140,6 +140,7 @@ type Enum
|
|||||||
| EnumBaz
|
| EnumBaz
|
||||||
|
|
||||||
|
|
||||||
|
enumVariants : List Enum
|
||||||
enumVariants =
|
enumVariants =
|
||||||
[ EnumFoo
|
[ EnumFoo
|
||||||
, EnumBar
|
, EnumBar
|
||||||
@ -153,6 +154,7 @@ type Enumeric
|
|||||||
| Enumeric3
|
| Enumeric3
|
||||||
|
|
||||||
|
|
||||||
|
enumericVariants : List Enumeric
|
||||||
enumericVariants =
|
enumericVariants =
|
||||||
[ Enumeric1
|
[ Enumeric1
|
||||||
, Enumeric2
|
, Enumeric2
|
||||||
|
@ -18,6 +18,7 @@ module Api.Request.Default exposing
|
|||||||
, maybeGet
|
, maybeGet
|
||||||
, pathStringIntegerEnumerationGet, Enumeration(..), enumerationVariants
|
, pathStringIntegerEnumerationGet, Enumeration(..), enumerationVariants
|
||||||
, queryGet, Enum(..), enumVariants
|
, queryGet, Enum(..), enumVariants
|
||||||
|
, uuidGet
|
||||||
)
|
)
|
||||||
|
|
||||||
import Api
|
import Api
|
||||||
@ -26,6 +27,7 @@ import Dict
|
|||||||
import Http
|
import Http
|
||||||
import Json.Decode
|
import Json.Decode
|
||||||
import Json.Encode
|
import Json.Encode
|
||||||
|
import Uuid exposing (Uuid)
|
||||||
|
|
||||||
|
|
||||||
type HeaderType
|
type HeaderType
|
||||||
@ -33,6 +35,7 @@ type HeaderType
|
|||||||
| HeaderTypeRight
|
| HeaderTypeRight
|
||||||
|
|
||||||
|
|
||||||
|
headerTypeVariants : List HeaderType
|
||||||
headerTypeVariants =
|
headerTypeVariants =
|
||||||
[ HeaderTypeLeft
|
[ HeaderTypeLeft
|
||||||
, HeaderTypeRight
|
, HeaderTypeRight
|
||||||
@ -57,6 +60,7 @@ type Enumeration
|
|||||||
| EnumerationC
|
| EnumerationC
|
||||||
|
|
||||||
|
|
||||||
|
enumerationVariants : List Enumeration
|
||||||
enumerationVariants =
|
enumerationVariants =
|
||||||
[ EnumerationA
|
[ EnumerationA
|
||||||
, EnumerationB
|
, EnumerationB
|
||||||
@ -85,6 +89,7 @@ type Enum
|
|||||||
| EnumC
|
| EnumC
|
||||||
|
|
||||||
|
|
||||||
|
enumVariants : List Enum
|
||||||
enumVariants =
|
enumVariants =
|
||||||
[ EnumA
|
[ EnumA
|
||||||
, EnumB
|
, EnumB
|
||||||
@ -157,3 +162,16 @@ queryGet string_query int_query enum_query =
|
|||||||
[]
|
[]
|
||||||
Nothing
|
Nothing
|
||||||
(Json.Decode.succeed ())
|
(Json.Decode.succeed ())
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
uuidGet : Maybe Uuid -> Api.Request Uuid
|
||||||
|
uuidGet value_query =
|
||||||
|
Api.request
|
||||||
|
"GET"
|
||||||
|
"/uuid"
|
||||||
|
[]
|
||||||
|
[ ( "value", Maybe.map Uuid.toString value_query ) ]
|
||||||
|
[]
|
||||||
|
Nothing
|
||||||
|
Uuid.decoder
|
||||||
|
Loading…
x
Reference in New Issue
Block a user