[Ruby] Escape string interpolation notation of Ruby (#2261) (#2287)

* escape string interpolation notation of Ruby (#2261)

* update samples (#2261)
This commit is contained in:
Akira Tanimura 2019-03-04 23:22:45 +09:00 committed by William Cheng
parent 88abea1755
commit 1d02f0374b
12 changed files with 82 additions and 22 deletions

View File

@ -33,10 +33,10 @@ import java.util.Locale;
import static org.openapitools.codegen.utils.StringUtils.underscore; import static org.openapitools.codegen.utils.StringUtils.underscore;
abstract class AbstractRubyCodegen extends DefaultCodegen implements CodegenConfig { abstract public class AbstractRubyCodegen extends DefaultCodegen implements CodegenConfig {
private static final Logger LOGGER = LoggerFactory.getLogger(AbstractRubyCodegen.class); private static final Logger LOGGER = LoggerFactory.getLogger(AbstractRubyCodegen.class);
AbstractRubyCodegen() { public AbstractRubyCodegen() {
super(); super();
setReservedWordsLowerCase( setReservedWordsLowerCase(
@ -177,7 +177,7 @@ abstract class AbstractRubyCodegen extends DefaultCodegen implements CodegenConf
@Override @Override
public String escapeUnsafeCharacters(String input) { public String escapeUnsafeCharacters(String input) {
return input.replace("=end", "=_end").replace("=begin", "=_begin"); return input.replace("=end", "=_end").replace("=begin", "=_begin").replace("#{", "\\#{");
} }
@Override @Override

View File

@ -0,0 +1,26 @@
package org.openapitools.codegen.ruby;
import org.openapitools.codegen.languages.AbstractRubyCodegen;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
/**
* Tests for AbstractRubyCodegen
*/
public class AbstractRubyCodegenTest {
private AbstractRubyCodegen codegen;
@BeforeMethod
public void setup() {
codegen = new AbstractRubyCodegen() {
};
}
@Test
public void testEscapeUnsafeCharacters() {
Assert.assertEquals(codegen.escapeUnsafeCharacters("=begin"), "=_begin");
Assert.assertEquals(codegen.escapeUnsafeCharacters("=end"), "=_end");
Assert.assertEquals(codegen.escapeUnsafeCharacters("#{x}"), "\\#{x}");
}
}

View File

@ -5,4 +5,12 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | ------------- ------------ | ------------- | ------------- | -------------
**_return** | **Integer** | property description */ ' \" =_end -- \\r\\n \\n \\r | [optional] **_return** | **Integer** | property description */ ' \" =_end -- \\r\\n \\n \\r | [optional]
## Code Sample
```ruby
require 'Petstore'
instance = Petstore::ModelReturn.new(_return: null)
```

View File

@ -34,5 +34,24 @@ module Petstore
super arg super arg
end end
end end
# Override to_s to display a friendly error message
def to_s
message
end
def message
if @message.nil?
msg = "Error message: the server returns an error"
else
msg = @message
end
msg += "\nHTTP status code: #{code}" if code
msg += "\nResponse headers: #{response_headers}" if response_headers
msg += "\nResponse body: #{response_body}" if response_body
msg
end
end end
end end

View File

@ -35,13 +35,20 @@ module Petstore
# Initializes the object # Initializes the object
# @param [Hash] attributes Model attributes in the form of hash # @param [Hash] attributes Model attributes in the form of hash
def initialize(attributes = {}) def initialize(attributes = {})
return unless attributes.is_a?(Hash) if (!attributes.is_a?(Hash))
fail ArgumentError, "The input argument (attributes) must be a hash in `Petstore::ModelReturn` initialize method"
end
# convert string to symbol for hash key # check to see if the attribute exists and convert string to symbol for hash key
attributes = attributes.each_with_object({}) { |(k, v), h| h[k.to_sym] = v } attributes = attributes.each_with_object({}) { |(k, v), h|
if (!self.class.attribute_map.key?(k.to_sym))
fail ArgumentError, "`#{k}` is not a valid attribute in `Petstore::ModelReturn`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
end
h[k.to_sym] = v
}
if attributes.has_key?(:'return') if attributes.key?(:'_return')
self._return = attributes[:'return'] self._return = attributes[:'_return']
end end
end end

View File

@ -19,7 +19,7 @@ require 'json'
describe 'FakeApi' do describe 'FakeApi' do
before do before do
# run before each test # run before each test
@instance = Petstore::FakeApi.new @api_instance = Petstore::FakeApi.new
end end
after do after do
@ -28,7 +28,7 @@ describe 'FakeApi' do
describe 'test an instance of FakeApi' do describe 'test an instance of FakeApi' do
it 'should create an instance of FakeApi' do it 'should create an instance of FakeApi' do
expect(@instance).to be_instance_of(Petstore::FakeApi) expect(@api_instance).to be_instance_of(Petstore::FakeApi)
end end
end end

View File

@ -19,7 +19,7 @@ require 'json'
describe 'AnotherFakeApi' do describe 'AnotherFakeApi' do
before do before do
# run before each test # run before each test
@instance = Petstore::AnotherFakeApi.new @api_instance = Petstore::AnotherFakeApi.new
end end
after do after do
@ -28,7 +28,7 @@ describe 'AnotherFakeApi' do
describe 'test an instance of AnotherFakeApi' do describe 'test an instance of AnotherFakeApi' do
it 'should create an instance of AnotherFakeApi' do it 'should create an instance of AnotherFakeApi' do
expect(@instance).to be_instance_of(Petstore::AnotherFakeApi) expect(@api_instance).to be_instance_of(Petstore::AnotherFakeApi)
end end
end end

View File

@ -19,7 +19,7 @@ require 'json'
describe 'FakeApi' do describe 'FakeApi' do
before do before do
# run before each test # run before each test
@instance = Petstore::FakeApi.new @api_instance = Petstore::FakeApi.new
end end
after do after do
@ -28,7 +28,7 @@ describe 'FakeApi' do
describe 'test an instance of FakeApi' do describe 'test an instance of FakeApi' do
it 'should create an instance of FakeApi' do it 'should create an instance of FakeApi' do
expect(@instance).to be_instance_of(Petstore::FakeApi) expect(@api_instance).to be_instance_of(Petstore::FakeApi)
end end
end end

View File

@ -19,7 +19,7 @@ require 'json'
describe 'FakeClassnameTags123Api' do describe 'FakeClassnameTags123Api' do
before do before do
# run before each test # run before each test
@instance = Petstore::FakeClassnameTags123Api.new @api_instance = Petstore::FakeClassnameTags123Api.new
end end
after do after do
@ -28,7 +28,7 @@ describe 'FakeClassnameTags123Api' do
describe 'test an instance of FakeClassnameTags123Api' do describe 'test an instance of FakeClassnameTags123Api' do
it 'should create an instance of FakeClassnameTags123Api' do it 'should create an instance of FakeClassnameTags123Api' do
expect(@instance).to be_instance_of(Petstore::FakeClassnameTags123Api) expect(@api_instance).to be_instance_of(Petstore::FakeClassnameTags123Api)
end end
end end

View File

@ -19,7 +19,7 @@ require 'json'
describe 'PetApi' do describe 'PetApi' do
before do before do
# run before each test # run before each test
@instance = Petstore::PetApi.new @api_instance = Petstore::PetApi.new
end end
after do after do
@ -28,7 +28,7 @@ describe 'PetApi' do
describe 'test an instance of PetApi' do describe 'test an instance of PetApi' do
it 'should create an instance of PetApi' do it 'should create an instance of PetApi' do
expect(@instance).to be_instance_of(Petstore::PetApi) expect(@api_instance).to be_instance_of(Petstore::PetApi)
end end
end end

View File

@ -19,7 +19,7 @@ require 'json'
describe 'StoreApi' do describe 'StoreApi' do
before do before do
# run before each test # run before each test
@instance = Petstore::StoreApi.new @api_instance = Petstore::StoreApi.new
end end
after do after do
@ -28,7 +28,7 @@ describe 'StoreApi' do
describe 'test an instance of StoreApi' do describe 'test an instance of StoreApi' do
it 'should create an instance of StoreApi' do it 'should create an instance of StoreApi' do
expect(@instance).to be_instance_of(Petstore::StoreApi) expect(@api_instance).to be_instance_of(Petstore::StoreApi)
end end
end end

View File

@ -19,7 +19,7 @@ require 'json'
describe 'UserApi' do describe 'UserApi' do
before do before do
# run before each test # run before each test
@instance = Petstore::UserApi.new @api_instance = Petstore::UserApi.new
end end
after do after do
@ -28,7 +28,7 @@ describe 'UserApi' do
describe 'test an instance of UserApi' do describe 'test an instance of UserApi' do
it 'should create an instance of UserApi' do it 'should create an instance of UserApi' do
expect(@instance).to be_instance_of(Petstore::UserApi) expect(@api_instance).to be_instance_of(Petstore::UserApi)
end end
end end