Ruby: improve handling of default values and examples for parameters in docs

This commit is contained in:
xhh 2016-03-11 15:23:55 +08:00
parent eafcc2427d
commit 1df0923525
10 changed files with 65 additions and 19 deletions

View File

@ -532,19 +532,65 @@ public class RubyClientCodegen extends DefaultCodegen implements CodegenConfig {
@Override @Override
public void setParameterExampleValue(CodegenParameter p) { public void setParameterExampleValue(CodegenParameter p) {
// NOTE: Can not get default value from ArrayProperty String example;
//String defaultValue = p.defaultValue;
//if (!StringUtils.isEmpty(defaultValue)) { if (p.defaultValue == null) {
// p.example = defaultValue; example = p.example;
// return; } else {
//} example = p.defaultValue;
if (Boolean.TRUE.equals(p.isString) || Boolean.TRUE.equals(p.isBinary) || Boolean.TRUE.equals(p.isByteArray)) {
p.example = "\"" + escapeText(p.example) + "\"";
} else if (Boolean.TRUE.equals(p.isFile)) {
p.example = "File.new(\"" + escapeText(p.example) + "\")";
} else if (Boolean.TRUE.equals(p.isDateTime) || Boolean.TRUE.equals(p.isDate)) {
p.example = "Date.parse(\"" + escapeText(p.example) + "\")";
} }
String type = p.baseType;
if (type == null) {
type = p.dataType;
}
if ("String".equals(type)) {
if (example == null) {
example = p.paramName + "_example";
}
example = "\"" + escapeText(example) + "\"";
} else if ("Integer".equals(type)) {
if (example == null) {
example = "56";
}
} else if ("Float".equals(type)) {
if (example == null) {
example = "3.4";
}
} else if ("BOOLEAN".equals(type)) {
if (example == null) {
example = "true";
}
} else if ("File".equals(type)) {
if (example == null) {
example = "/path/to/file";
}
example = "File.new(\"" + escapeText(example) + "\")";
} else if ("Date".equals(type)) {
if (example == null) {
example = "2013-10-20";
}
example = "Date.parse(\"" + escapeText(example) + "\")";
} else if ("DateTime".equals(type)) {
if (example == null) {
example = "2013-10-20T19:20:30+01:00";
}
example = "DateTime.parse(\"" + escapeText(example) + "\")";
} else if (!languageSpecificPrimitives.contains(type)) {
// type is a model class, e.g. User
example = moduleName + "::" + type + ".new";
}
if (example == null) {
example = "nil";
} else if (Boolean.TRUE.equals(p.isListContainer)) {
example = "[" + example + "]";
} else if (Boolean.TRUE.equals(p.isMapContainer)) {
example = "{'key': " + example + "}";
}
p.example = example;
} }
public void setGemName(String gemName) { public void setGemName(String gemName) {

View File

@ -21,10 +21,10 @@ Method | HTTP request | Description
```ruby ```ruby
api = {{{moduleName}}}::{{{classname}}}.new{{#hasParams}} api = {{{moduleName}}}::{{{classname}}}.new{{#hasParams}}
{{#vendorExtensions.x-codegen-hasRequiredParams}}{{#allParams}}{{#required}} {{#vendorExtensions.x-codegen-hasRequiredParams}}{{#allParams}}{{#required}}
{{{paramName}}} = {{#isListContainer}}[{{/isListContainer}}{{#isBodyParam}}{{{moduleName}}}::{{{baseType}}}.new{{/isBodyParam}}{{^isBodyParam}}{{{example}}}{{/isBodyParam}}{{#isListContainer}}]{{/isListContainer}} # [{{{dataType}}}] {{{description}}} {{{paramName}}} = {{{example}}} # [{{{dataType}}}] {{{description}}}
{{/required}}{{/allParams}}{{/vendorExtensions.x-codegen-hasRequiredParams}}{{#hasOptionalParams}} {{/required}}{{/allParams}}{{/vendorExtensions.x-codegen-hasRequiredParams}}{{#hasOptionalParams}}
opts = { {{#allParams}}{{^required}} opts = { {{#allParams}}{{^required}}
{{{paramName}}}: {{#isListContainer}}[{{/isListContainer}}{{#isBodyParam}}{{{moduleName}}}::{{{baseType}}}.new{{/isBodyParam}}{{^isBodyParam}}{{{example}}}{{/isBodyParam}}{{#isListContainer}}]{{/isListContainer}}{{#vendorExtensions.x-codegen-hasMoreOptional}},{{/vendorExtensions.x-codegen-hasMoreOptional}} # [{{{dataType}}}] {{{description}}}{{/required}}{{/allParams}} {{{paramName}}}: {{{example}}}{{#vendorExtensions.x-codegen-hasMoreOptional}},{{/vendorExtensions.x-codegen-hasMoreOptional}} # [{{{dataType}}}] {{{description}}}{{/required}}{{/allParams}}
}{{/hasOptionalParams}}{{/hasParams}} }{{/hasOptionalParams}}{{/hasParams}}
begin begin

View File

@ -6,7 +6,7 @@ Version: 1.0.0
Automatically generated by the Ruby Swagger Codegen project: Automatically generated by the Ruby Swagger Codegen project:
- Build date: 2016-03-10T17:17:33.736+08:00 - Build date: 2016-03-11T15:13:56.730+08:00
- Build package: class io.swagger.codegen.languages.RubyClientCodegen - Build package: class io.swagger.codegen.languages.RubyClientCodegen
## Installation ## Installation

View File

@ -72,7 +72,7 @@ Fake endpoint to test byte array in body parameter for adding a new pet to the s
api = Petstore::PetApi.new api = Petstore::PetApi.new
opts = { opts = {
body: Petstore::String.new # [String] Pet object in the form of byte array body: "B" # [String] Pet object in the form of byte array
} }
begin begin
@ -161,7 +161,7 @@ Multiple status values can be provided with comma separated strings
api = Petstore::PetApi.new api = Petstore::PetApi.new
opts = { opts = {
status: [] # [Array<String>] Status values that need to be considered for query status: ["available"] # [Array<String>] Status values that need to be considered for query
} }
begin begin
@ -204,7 +204,7 @@ Muliple tags can be provided with comma seperated strings. Use tag1, tag2, tag3
api = Petstore::PetApi.new api = Petstore::PetApi.new
opts = { opts = {
tags: [] # [Array<String>] Tags to filter by tags: ["tags_example"] # [Array<String>] Tags to filter by
} }
begin begin

View File

@ -66,7 +66,7 @@ A single status value can be provided as a string
api = Petstore::StoreApi.new api = Petstore::StoreApi.new
opts = { opts = {
status: "status_example" # [String] Status value that needs to be considered for query status: "placed" # [String] Status value that needs to be considered for query
} }
begin begin