Skip to content

Commit 50c99c0

Browse files
committed
add iterator to seek for problematic tags
1 parent 1d27a43 commit 50c99c0

File tree

3 files changed

+11
-20
lines changed

3 files changed

+11
-20
lines changed

example/app.js

+1-8
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,19 @@
11
'use strict';
22

3-
43
// Dependencies
54
var express = require('express');
65
var bodyParser = require('body-parser');
76
var routes = require('./routes');
87
var routes2 = require('./routes2');
98
var swaggerJSDoc = require('../');
109

11-
1210
// Initialize express
1311
var app = express();
1412
app.use(bodyParser.json()); // To support JSON-encoded bodies
1513
app.use(bodyParser.urlencoded({ // To support URL-encoded bodies
1614
extended: true,
1715
}));
1816

19-
2017
// Swagger definition
2118
// You can set every attribute except paths and swagger
2219
// https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md
@@ -30,7 +27,6 @@ var swaggerDefinition = {
3027
basePath: '/', // Base path (optional)
3128
};
3229

33-
3430
// Options for the swagger docs
3531
var options = {
3632
// Import swaggerDefinitions
@@ -39,7 +35,6 @@ var options = {
3935
apis: ['./example/routes*.js', './example/parameters.yaml'],
4036
};
4137

42-
4338
// Initialize swagger-jsdoc -> returns validated swagger spec in json format
4439
var swaggerSpec = swaggerJSDoc(options);
4540

@@ -49,17 +44,15 @@ app.get('/api-docs.json', function(req, res) {
4944
res.send(swaggerSpec);
5045
});
5146

52-
5347
// Set up the routes
5448
routes.setup(app);
5549
routes2.setup(app);
5650

5751
// Expose app
5852
exports = module.exports = app;
5953

60-
6154
// Start the server
62-
var server = app.listen(3000, function() {
55+
var server = app.listen(3000, function startExpressServer() {
6356
var host = server.address().address;
6457
var port = server.address().port;
6558

lib/swagger-helpers.js

+9-12
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
'use strict';
22

3+
// Dependencies.
4+
var RecursiveIterator = require('recursive-iterator');
5+
36
/**
47
* Adds the tags property to a swagger object.
58
* @function
@@ -183,16 +186,10 @@ function addDataToSwaggerObject(swaggerObject, data) {
183186
* @param {Array} problems - aggregate list of found problems
184187
*/
185188
function seekWrong(list, wrongSet, problems) {
186-
// @TODO: treat list well {Array|object}
187-
for (var property in list) {
188-
if (list.hasOwnProperty(property)) {
189-
// The property is wrong.
190-
if (wrongSet.indexOf(property) > 0) {
191-
problems.push(problems);
192-
}
193-
if (typeof list[property] == 'object' ) {
194-
seekWrong(object[property], wrongSet, problems);
195-
}
189+
var iterator = new RecursiveIterator(list, 0, false);
190+
for (var item = iterator.next(); !item.done; item = iterator.next()) {
191+
if (wrongSet.indexOf(item.value.key) > 0) {
192+
problems.push(item.value.key);
196193
}
197194
}
198195
}
@@ -204,8 +201,8 @@ function seekWrong(list, wrongSet, problems) {
204201
* @returns {Array} problems - a list of problems encountered
205202
*/
206203
function findDeprecated(sources) {
207-
// @TODO: change to by dynamic
208-
var wrong = ['tags', 'definitions'];
204+
var wrong = _getSwaggerSchemaWrongProperties();
205+
// accumulate problems encountered
209206
var problems = [];
210207
sources.forEach(function(source) {
211208
// Iterate through `source`, search for `wrong`, accumulate in `problems`.

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
"doctrine": "^1.2.0",
3535
"glob": "^7.0.3",
3636
"js-yaml": "^3.5.3",
37+
"recursive-iterator": "^2.0.3",
3738
"swagger-parser": "^3.4.0"
3839
},
3940
"devDependencies": {

0 commit comments

Comments
 (0)