Skip to content

Commit

Permalink
better JS enum class support
Browse files Browse the repository at this point in the history
  • Loading branch information
wing328 committed May 3, 2016
1 parent d35e30d commit acb34e3
Show file tree
Hide file tree
Showing 18 changed files with 100 additions and 172 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,91 +15,6 @@
}(this, function(ApiClient{{#imports}}, {{import}}{{/imports}}) {
'use strict';
{{#models}}{{#model}}{{#emitJSDoc}} /**
* The {{classname}} model module.
* @module {{#invokerPackage}}{{invokerPackage}}/{{/invokerPackage}}{{#modelPackage}}{{modelPackage}}/{{/modelPackage}}{{classname}}
* @version {{projectVersion}}
*/

/**
* Constructs a new <code>{{classname}}</code>.{{#description}}
* {{description}}{{/description}}
* @alias module:{{#invokerPackage}}{{invokerPackage}}/{{/invokerPackage}}{{#modelPackage}}{{modelPackage}}/{{/modelPackage}}{{classname}}
* @class{{#useInheritance}}{{#parent}}
* @extends {{#parentModel}}module:{{#invokerPackage}}{{invokerPackage}}/{{/invokerPackage}}{{#modelPackage}}{{modelPackage}}/{{/modelPackage}}{{classname}}{{/parentModel}}{{^parentModel}}{{#vendorExtensions.x-isArray}}Array{{/vendorExtensions.x-isArray}}{{#vendorExtensions.x-isMap}}Object{{/vendorExtensions.x-isMap}}{{/parentModel}}{{/parent}}{{#interfaces}}
* @implements module:{{#invokerPackage}}{{invokerPackage}}/{{/invokerPackage}}{{#modelPackage}}{{modelPackage}}/{{/modelPackage}}{{.}}{{/interfaces}}{{/useInheritance}}{{#vendorExtensions.x-all-required}}
* @param {{.}}{{/vendorExtensions.x-all-required}}
*/
{{/emitJSDoc}} var exports = function({{#vendorExtensions.x-all-required}}{{.}}{{^-last}}, {{/-last}}{{/vendorExtensions.x-all-required}}) {
var _this = this;
{{#parent}}{{^parentModel}}{{#vendorExtensions.x-isArray}} _this = new Array();
Object.setPrototypeOf(_this, exports);
{{/vendorExtensions.x-isArray}}{{/parentModel}}{{/parent}}{{#useInheritance}}{{#parentModel}} {{classname}}.call(_this{{#vendorExtensions.x-all-required}}, {{.}}{{/vendorExtensions.x-all-required}});{{/parentModel}}
{{#interfaceModels}} {{classname}}.call(_this{{#vendorExtensions.x-all-required}}, {{.}}{{/vendorExtensions.x-all-required}});
{{/interfaceModels}}{{/useInheritance}}{{#vars}}{{#required}} _this['{{baseName}}'] = {{name}};{{/required}}
{{/vars}}{{#parent}}{{^parentModel}} return _this;
{{/parentModel}}{{/parent}} };

{{#emitJSDoc}} /**
* Constructs a <code>{{classname}}</code> from a plain JavaScript object, optionally creating a new instance.
* Copies all relevant properties from <code>data</code> to <code>obj</code> if supplied or a new instance if not.
* @param {Object} data The plain JavaScript object bearing properties of interest.
* @param {{=< >=}}{module:<#invokerPackage><invokerPackage>/</invokerPackage><#modelPackage><modelPackage>/</modelPackage><classname>}<={{ }}=> obj Optional instance to populate.
* @return {{=< >=}}{module:<#invokerPackage><invokerPackage>/</invokerPackage><#modelPackage><modelPackage>/</modelPackage><classname>}<={{ }}=> The populated <code>{{classname}}</code> instance.
*/
{{/emitJSDoc}} exports.constructFromObject = function(data, obj) {
if (data){{! TODO: support polymorphism: discriminator property on data determines class to instantiate.}} {
obj = obj || new exports();
{{#parent}}{{^parentModel}} ApiClient.constructFromObject(data, obj, {{vendorExtensions.x-itemType}});
{{/parentModel}}{{/parent}}{{#useInheritance}}{{#parentModel}} {{classname}}.constructFromObject(data, obj);{{/parentModel}}
{{#interfaces}} {{.}}.constructFromObject(data, obj);
{{/interfaces}}{{/useInheritance}}{{#vars}} if (data.hasOwnProperty('{{baseName}}')) {
obj['{{baseName}}']{{{defaultValueWithParam}}}
}
{{/vars}} }
return obj;
}
{{#useInheritance}}{{#parentModel}}
exports.prototype = Object.create({{classname}}.prototype);
exports.prototype.constructor = exports;
{{/parentModel}}{{/useInheritance}}
{{#vars}}{{#emitJSDoc}}
/**{{#description}}
* {{{description}}}{{/description}}
* @member {{{vendorExtensions.x-jsdoc-type}}} {{baseName}}{{#defaultValue}}
* @default {{{defaultValue}}}{{/defaultValue}}
*/
{{/emitJSDoc}} exports.prototype['{{baseName}}'] = {{#defaultValue}}{{{defaultValue}}}{{/defaultValue}}{{^defaultValue}}undefined{{/defaultValue}};
{{/vars}}{{#useInheritance}}{{#interfaceModels}}
// Implement {{classname}} interface:{{#allVars}}{{#emitJSDoc}}
/**{{#description}}
* {{{description}}}{{/description}}
* @member {{{vendorExtensions.x-jsdoc-type}}} {{baseName}}{{#defaultValue}}
* @default {{{defaultValue}}}{{/defaultValue}}
*/
{{/emitJSDoc}} exports.prototype['{{baseName}}'] = {{#defaultValue}}{{{defaultValue}}}{{/defaultValue}}{{^defaultValue}}undefined{{/defaultValue}};
{{/allVars}}{{/interfaceModels}}{{/useInheritance}}
{{#emitModelMethods}}{{#vars}}{{#emitJSDoc}} /**{{#description}}
* Returns {{{description}}}{{/description}}{{#minimum}}
* minimum: {{minimum}}{{/minimum}}{{#maximum}}
* maximum: {{maximum}}{{/maximum}}
* @return {{{vendorExtensions.x-jsdoc-type}}}
*/
{{/emitJSDoc}} exports.prototype.{{getter}} = function() {
return this['{{baseName}}'];
}

{{#emitJSDoc}} /**{{#description}}
* Sets {{{description}}}{{/description}}
* @param {{{vendorExtensions.x-jsdoc-type}}} {{name}}{{#description}} {{{description}}}{{/description}}
*/
{{/emitJSDoc}} exports.prototype.{{setter}} = function({{name}}) {
this['{{baseName}}'] = {{name}};
}

{{/vars}}{{/emitModelMethods}}
{{#vars}}{{#isEnum}}{{>enumClass}}{{/isEnum}}{{#items.isEnum}}{{#items}}
{{>enumClass}}{{/items}}*/{{/items.isEnum}}{{/vars}}

return exports;
{{/model}}{{/models}}}));
{{#models}}{{#model}}
{{#isEnum}}{{>partial_model_enum_class}}{{/isEnum}}{{^isEnum}}{{>partial_model_generic}}{{/isEnum}}
{{/model}}{{/models}}
2 changes: 1 addition & 1 deletion samples/client/petstore/javascript/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ This SDK is automatically generated by the [Swagger Codegen](https://github.com/

- API version: 1.0.0
- Package version: 1.0.0
- Build date: 2016-05-02T23:24:54.621+08:00
- Build date: 2016-05-03T11:05:41.851+08:00
- Build package: class io.swagger.codegen.languages.JavascriptClientCodegen

## Installation
Expand Down
6 changes: 5 additions & 1 deletion samples/client/petstore/javascript/src/model/Animal.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
}(this, function(ApiClient) {
'use strict';




/**
* The Animal model module.
* @module model/Animal
Expand Down Expand Up @@ -51,7 +54,6 @@
return obj;
}


/**
* @member {String} className
*/
Expand All @@ -62,3 +64,5 @@

return exports;
}));


8 changes: 5 additions & 3 deletions samples/client/petstore/javascript/src/model/ApiResponse.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
}(this, function(ApiClient) {
'use strict';




/**
* The ApiResponse model module.
* @module model/ApiResponse
Expand Down Expand Up @@ -58,17 +61,14 @@
return obj;
}


/**
* @member {Integer} code
*/
exports.prototype['code'] = undefined;

/**
* @member {String} type
*/
exports.prototype['type'] = undefined;

/**
* @member {String} message
*/
Expand All @@ -79,3 +79,5 @@

return exports;
}));


6 changes: 5 additions & 1 deletion samples/client/petstore/javascript/src/model/Cat.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
}(this, function(ApiClient, Animal) {
'use strict';




/**
* The Cat model module.
* @module model/Cat
Expand Down Expand Up @@ -55,7 +58,6 @@
exports.prototype = Object.create(Animal.prototype);
exports.prototype.constructor = exports;


/**
* @member {Boolean} declawed
*/
Expand All @@ -66,3 +68,5 @@

return exports;
}));


7 changes: 5 additions & 2 deletions samples/client/petstore/javascript/src/model/Category.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
}(this, function(ApiClient) {
'use strict';




/**
* The Category model module.
* @module model/Category
Expand Down Expand Up @@ -54,12 +57,10 @@
return obj;
}


/**
* @member {Integer} id
*/
exports.prototype['id'] = undefined;

/**
* @member {String} name
*/
Expand All @@ -70,3 +71,5 @@

return exports;
}));


6 changes: 5 additions & 1 deletion samples/client/petstore/javascript/src/model/Dog.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
}(this, function(ApiClient, Animal) {
'use strict';




/**
* The Dog model module.
* @module model/Dog
Expand Down Expand Up @@ -55,7 +58,6 @@
exports.prototype = Object.create(Animal.prototype);
exports.prototype.constructor = exports;


/**
* @member {String} breed
*/
Expand All @@ -66,3 +68,5 @@

return exports;
}));


52 changes: 21 additions & 31 deletions samples/client/petstore/javascript/src/model/EnumClass.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,40 +15,30 @@
}(this, function(ApiClient) {
'use strict';

/**
* The EnumClass model module.
* @module model/EnumClass
* @version 1.0.0
*/

/**
* Constructs a new <code>EnumClass</code>.
* @alias module:model/EnumClass
* @class
*/
var exports = function() {
var _this = this;

};

/**
* Constructs a <code>EnumClass</code> from a plain JavaScript object, optionally creating a new instance.
* Copies all relevant properties from <code>data</code> to <code>obj</code> if supplied or a new instance if not.
* @param {Object} data The plain JavaScript object bearing properties of interest.
* @param {module:model/EnumClass} obj Optional instance to populate.
* @return {module:model/EnumClass} The populated <code>EnumClass</code> instance.
* Enum class EnumClass.
* @enum {}
* @readonly
*/
exports.constructFromObject = function(data, obj) {
if (data) {
obj = obj || new exports();

}
return obj;
}




exports.EnumClass = {
/**
* value: _abc
* @const
*/
"_abc": "_abc",
/**
* value: -efg
* @const
*/
"-efg": "-efg",
/**
* value: (xyz)
* @const
*/
"(xyz)": "(xyz)" };

return exports;
}));


8 changes: 5 additions & 3 deletions samples/client/petstore/javascript/src/model/EnumTest.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
}(this, function(ApiClient) {
'use strict';




/**
* The EnumTest model module.
* @module model/EnumTest
Expand Down Expand Up @@ -58,17 +61,14 @@
return obj;
}


/**
* @member {module:model/EnumTest.EnumStringEnum} enum_string
*/
exports.prototype['enum_string'] = undefined;

/**
* @member {module:model/EnumTest.EnumIntegerEnum} enum_integer
*/
exports.prototype['enum_integer'] = undefined;

/**
* @member {module:model/EnumTest.EnumNumberEnum} enum_number
*/
Expand Down Expand Up @@ -127,3 +127,5 @@

return exports;
}));


Loading

0 comments on commit acb34e3

Please sign in to comment.