From 263508eb2fc650783ba66d5ca7b9964f315a3f1b Mon Sep 17 00:00:00 2001 From: Waldek Kozba <100assc@gmail.com> Date: Fri, 3 Apr 2015 14:14:33 +0000 Subject: [PATCH] Enum definition at array items level as an option Default value as array for array type parameters --- lib/types/operation.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/types/operation.js b/lib/types/operation.js index d0de0fb5b..e531e7fa1 100644 --- a/lib/types/operation.js +++ b/lib/types/operation.js @@ -73,6 +73,10 @@ var Operation = module.exports = function (parent, scheme, operationId, httpMeth if (param.type === 'array') { param.isList = true; param.allowMultiple = true; + // the enum can be defined at the items level + if (param.items && param.items.enum) { + param['enum'] = param.items.enum; + } } var innerType = this.getType(param); @@ -92,7 +96,7 @@ var Operation = module.exports = function (parent, scheme, operationId, httpMeth for (id = 0; id < param['enum'].length; id++) { var value = param['enum'][id]; - var isDefault = (value === param.default) ? true : false; + var isDefault = this.isDefaultArrayItemValue(value, param); param.allowableValues.values.push(value); param.allowableValues.descriptiveValues.push({value : value, isDefault: isDefault}); @@ -188,6 +192,13 @@ var Operation = module.exports = function (parent, scheme, operationId, httpMeth return this; }; +Operation.prototype.isDefaultArrayItemValue = function(value, param) { + if (param.default && Array.isArray(param.default)) { + return param.default.indexOf(value) !== -1; + } + return value === param.default; +}; + Operation.prototype.getType = function (param) { var type = param.type; var format = param.format;