fix elixir model naming

This commit is contained in:
wing328 2017-09-27 22:37:42 +08:00
parent bd5b586028
commit 2c7dcbe3e5
9 changed files with 48 additions and 84 deletions

View File

@ -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"

View File

@ -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);
}

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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