forked from loafle/openapi-generator-original
fix elixir model naming
This commit is contained in:
parent
bd5b586028
commit
2c7dcbe3e5
@ -24,6 +24,11 @@ then
|
||||
mvn clean package
|
||||
fi
|
||||
|
||||
# remove existing lib and model file
|
||||
echo "removing existing lib, model files"
|
||||
rm -Rf "samples/client/petstore/elixir/lib/swagger_petstore/model/"
|
||||
rm -Rf "samples/client/petstore/elixir/lib/swagger_petstore/lib/"
|
||||
|
||||
# if you've executed sbt assembly previously it will use that instead.
|
||||
export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties"
|
||||
args="$@ generate -t modules/swagger-codegen/src/main/resources/elixir -i modules/swagger-codegen/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml -l elixir -o samples/client/petstore/elixir"
|
||||
|
@ -66,6 +66,7 @@ public class ElixirClientCodegen extends DefaultCodegen implements CodegenConfig
|
||||
|
||||
/**
|
||||
* Reserved words. Override this with reserved words specific to your language
|
||||
* Ref: https://github.com/itsgreggreg/elixir_quick_reference#reserved-words
|
||||
*/
|
||||
reservedWords = new HashSet<String>(
|
||||
Arrays.asList(
|
||||
@ -355,16 +356,49 @@ public class ElixirClientCodegen extends DefaultCodegen implements CodegenConfig
|
||||
if (name.length() == 0) {
|
||||
return "Default";
|
||||
}
|
||||
return initialCaps(name);
|
||||
return camelize(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toApiFilename(String name) {
|
||||
// replace - with _ e.g. created-at => created_at
|
||||
name = name.replaceAll("-", "_");
|
||||
|
||||
// e.g. PetApi.go => pet_api.go
|
||||
return underscore(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toModelName(String name) {
|
||||
// camelize the model name
|
||||
// phone_number => PhoneNumber
|
||||
return camelize(toModelFilename(name));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toModelFilename(String name) {
|
||||
if (!StringUtils.isEmpty(modelNamePrefix)) {
|
||||
name = modelNamePrefix + "_" + name;
|
||||
}
|
||||
|
||||
if (!StringUtils.isEmpty(modelNameSuffix)) {
|
||||
name = name + "_" + modelNameSuffix;
|
||||
}
|
||||
|
||||
name = sanitizeName(name);
|
||||
|
||||
// model name cannot use reserved keyword, e.g. return
|
||||
if (isReservedWord(name)) {
|
||||
LOGGER.warn(name + " (reserved word) cannot be used as model name. Renamed to " + ("model_" + name));
|
||||
name = "model_" + name; // e.g. return => ModelReturn (after camelize)
|
||||
}
|
||||
|
||||
// model name starts with number
|
||||
if (name.matches("^\\d.*")) {
|
||||
LOGGER.warn(name + " (model name starts with number) cannot be used as model name. Renamed to " + ("model_" + name));
|
||||
name = "model_" + name; // e.g. 200Response => Model200Response (after camelize)
|
||||
}
|
||||
|
||||
return underscore(name);
|
||||
}
|
||||
|
||||
|
@ -1,29 +0,0 @@
|
||||
defmodule SwaggerPetstore.Api.AnotherFake do
|
||||
@moduledoc """
|
||||
Documentation for SwaggerPetstore.Api.AnotherFake.
|
||||
"""
|
||||
|
||||
use Tesla
|
||||
|
||||
plug Tesla.Middleware.BaseUrl, "http://petstore.swagger.io:80/v2"
|
||||
plug Tesla.Middleware.JSON
|
||||
|
||||
@doc """
|
||||
To test special tags
|
||||
|
||||
To test special tags
|
||||
"""
|
||||
def test_special_tags(body) do
|
||||
method = [method: :patch]
|
||||
url = [url: "/another-fake/dummy"]
|
||||
query_params = []
|
||||
header_params = []
|
||||
body_params = [body: body]
|
||||
form_params = []
|
||||
params = query_params ++ header_params ++ body_params ++ form_params
|
||||
opts = []
|
||||
options = method ++ url ++ params ++ opts
|
||||
|
||||
request(options)
|
||||
end
|
||||
end
|
@ -274,21 +274,4 @@ defmodule SwaggerPetstore.Api.Fake do
|
||||
|> (&Connection.request(connection, &1)).()
|
||||
|> decode(false)
|
||||
end
|
||||
|
||||
@doc """
|
||||
test json serialization of form data
|
||||
"""
|
||||
def test_json_form_data(param, param2) do
|
||||
method = [method: :get]
|
||||
url = [url: "/fake/jsonFormData"]
|
||||
query_params = []
|
||||
header_params = []
|
||||
body_params = []
|
||||
form_params = [body: Enum.map_join([{:"param", param}, {:"param2", param2}], "&", &("#{elem(&1, 0)}=#{elem(&1, 1)}"))]
|
||||
params = query_params ++ header_params ++ body_params ++ form_params
|
||||
opts = []
|
||||
options = method ++ url ++ params ++ opts
|
||||
|
||||
request(options)
|
||||
end
|
||||
end
|
||||
|
@ -1,29 +0,0 @@
|
||||
defmodule SwaggerPetstore.Api.FakeClassnameTags123 do
|
||||
@moduledoc """
|
||||
Documentation for SwaggerPetstore.Api.FakeClassnameTags123.
|
||||
"""
|
||||
|
||||
use Tesla
|
||||
|
||||
plug Tesla.Middleware.BaseUrl, "http://petstore.swagger.io:80/v2"
|
||||
plug Tesla.Middleware.JSON
|
||||
|
||||
@doc """
|
||||
To test class name in snake case
|
||||
|
||||
|
||||
"""
|
||||
def test_classname(body) do
|
||||
method = [method: :patch]
|
||||
url = [url: "/fake_classname_test"]
|
||||
query_params = []
|
||||
header_params = []
|
||||
body_params = [body: body]
|
||||
form_params = []
|
||||
params = query_params ++ header_params ++ body_params ++ form_params
|
||||
opts = []
|
||||
options = method ++ url ++ params ++ opts
|
||||
|
||||
request(options)
|
||||
end
|
||||
end
|
@ -2,7 +2,7 @@
|
||||
# https://github.com/swagger-api/swagger-codegen.git
|
||||
# Do not edit the class manually.
|
||||
|
||||
defmodule SwaggerPetstore.Model.Enum_Test do
|
||||
defmodule SwaggerPetstore.Model.EnumTest do
|
||||
@moduledoc """
|
||||
|
||||
"""
|
||||
@ -16,7 +16,7 @@ defmodule SwaggerPetstore.Model.Enum_Test do
|
||||
]
|
||||
end
|
||||
|
||||
defimpl Poison.Decoder, for: SwaggerPetstore.Model.Enum_Test do
|
||||
defimpl Poison.Decoder, for: SwaggerPetstore.Model.EnumTest do
|
||||
import SwaggerPetstore.Deserializer
|
||||
def decode(value, options) do
|
||||
value
|
||||
|
@ -2,7 +2,7 @@
|
||||
# https://github.com/swagger-api/swagger-codegen.git
|
||||
# Do not edit the class manually.
|
||||
|
||||
defmodule SwaggerPetstore.Model.Format_test do
|
||||
defmodule SwaggerPetstore.Model.FormatTest do
|
||||
@moduledoc """
|
||||
|
||||
"""
|
||||
@ -25,7 +25,7 @@ defmodule SwaggerPetstore.Model.Format_test do
|
||||
]
|
||||
end
|
||||
|
||||
defimpl Poison.Decoder, for: SwaggerPetstore.Model.Format_test do
|
||||
defimpl Poison.Decoder, for: SwaggerPetstore.Model.FormatTest do
|
||||
import SwaggerPetstore.Deserializer
|
||||
def decode(value, options) do
|
||||
value
|
||||
|
@ -2,7 +2,7 @@
|
||||
# https://github.com/swagger-api/swagger-codegen.git
|
||||
# Do not edit the class manually.
|
||||
|
||||
defmodule SwaggerPetstore.Model.200_response do
|
||||
defmodule SwaggerPetstore.Model.Model200Response do
|
||||
@moduledoc """
|
||||
Model for testing model name starting with number
|
||||
"""
|
||||
@ -14,7 +14,7 @@ defmodule SwaggerPetstore.Model.200_response do
|
||||
]
|
||||
end
|
||||
|
||||
defimpl Poison.Decoder, for: SwaggerPetstore.Model.200_response do
|
||||
defimpl Poison.Decoder, for: SwaggerPetstore.Model.Model200Response do
|
||||
def decode(value, _options) do
|
||||
value
|
||||
end
|
@ -2,7 +2,7 @@
|
||||
# https://github.com/swagger-api/swagger-codegen.git
|
||||
# Do not edit the class manually.
|
||||
|
||||
defmodule SwaggerPetstore.Model.$special[model.name] do
|
||||
defmodule SwaggerPetstore.Model.SpecialModelName do
|
||||
@moduledoc """
|
||||
|
||||
"""
|
||||
@ -13,7 +13,7 @@ defmodule SwaggerPetstore.Model.$special[model.name] do
|
||||
]
|
||||
end
|
||||
|
||||
defimpl Poison.Decoder, for: SwaggerPetstore.Model.$special[model.name] do
|
||||
defimpl Poison.Decoder, for: SwaggerPetstore.Model.SpecialModelName do
|
||||
def decode(value, _options) do
|
||||
value
|
||||
end
|
Loading…
x
Reference in New Issue
Block a user