forked from loafle/openapi-generator-original
[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;
|
||||
|
||||
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.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.meta.features.*;
|
||||
import org.openapitools.codegen.utils.ModelUtils;
|
||||
@ -29,7 +30,8 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.io.File;
|
||||
import java.text.Collator;
|
||||
import java.io.IOException;
|
||||
import java.io.Writer;
|
||||
import java.util.*;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.stream.Collectors;
|
||||
@ -156,6 +158,12 @@ public class ElmClientCodegen extends DefaultCodegen implements CodegenConfig {
|
||||
supportingFiles.add(new SupportingFile("README.mustache", "", "README.md"));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ImmutableMap.Builder<String, Lambda> addMustacheLambdas() {
|
||||
return super.addMustacheLambdas()
|
||||
.put("removeWhitespace", new RemoveWhitespaceLambda());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String escapeUnsafeCharacters(String input) {
|
||||
return input.replace("*/", "*_/").replace("/*", "/_*");
|
||||
@ -425,4 +433,11 @@ public class ElmClientCodegen extends DefaultCodegen implements CodegenConfig {
|
||||
}
|
||||
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}}
|
||||
|
||||
|
||||
{{#lambda.camelcase}}{{^paramName}}{{classname}}{{/paramName}}{{enumName}}{{/lambda.camelcase}}Variants : List {{^paramName}}{{classname}}{{/paramName}}{{enumName}}
|
||||
{{#lambda.camelcase}}{{^paramName}}{{classname}}{{/paramName}}{{enumName}}{{/lambda.camelcase}}Variants =
|
||||
{{#allowableValues}}
|
||||
{{#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}}
|
||||
{{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}} =
|
||||
Api.request
|
||||
"{{httpMethod}}"
|
||||
|
@ -97,6 +97,22 @@ paths:
|
||||
responses:
|
||||
"200":
|
||||
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:
|
||||
schemas:
|
||||
Absent:
|
||||
|
@ -140,6 +140,7 @@ type Enum
|
||||
| EnumBaz
|
||||
|
||||
|
||||
enumVariants : List Enum
|
||||
enumVariants =
|
||||
[ EnumFoo
|
||||
, EnumBar
|
||||
@ -153,6 +154,7 @@ type Enumeric
|
||||
| Enumeric3
|
||||
|
||||
|
||||
enumericVariants : List Enumeric
|
||||
enumericVariants =
|
||||
[ Enumeric1
|
||||
, Enumeric2
|
||||
|
@ -18,6 +18,7 @@ module Api.Request.Default exposing
|
||||
, maybeGet
|
||||
, pathStringIntegerEnumerationGet, Enumeration(..), enumerationVariants
|
||||
, queryGet, Enum(..), enumVariants
|
||||
, uuidGet
|
||||
)
|
||||
|
||||
import Api
|
||||
@ -26,6 +27,7 @@ import Dict
|
||||
import Http
|
||||
import Json.Decode
|
||||
import Json.Encode
|
||||
import Uuid exposing (Uuid)
|
||||
|
||||
|
||||
type HeaderType
|
||||
@ -33,6 +35,7 @@ type HeaderType
|
||||
| HeaderTypeRight
|
||||
|
||||
|
||||
headerTypeVariants : List HeaderType
|
||||
headerTypeVariants =
|
||||
[ HeaderTypeLeft
|
||||
, HeaderTypeRight
|
||||
@ -57,6 +60,7 @@ type Enumeration
|
||||
| EnumerationC
|
||||
|
||||
|
||||
enumerationVariants : List Enumeration
|
||||
enumerationVariants =
|
||||
[ EnumerationA
|
||||
, EnumerationB
|
||||
@ -85,6 +89,7 @@ type Enum
|
||||
| EnumC
|
||||
|
||||
|
||||
enumVariants : List Enum
|
||||
enumVariants =
|
||||
[ EnumA
|
||||
, EnumB
|
||||
@ -157,3 +162,16 @@ queryGet string_query int_query enum_query =
|
||||
[]
|
||||
Nothing
|
||||
(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