From a94b97e59677e75c4d2a3e86476e45614306575b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Fry=C4=8D?= Date: Mon, 6 Feb 2017 12:55:53 +0100 Subject: [PATCH 1/2] Adding dependency on json-schema-faker --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 2c3bccb..4883a59 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,8 @@ ], "dependencies": { "trim": "0.0.1", - "json-schema-ref-parser":"*", + "json-schema-ref-parser":"*", + "json-schema-faker": "*", "deasync":"*" } } From 4c0d2b126c5102ec5a2917159e07e28a736dc766 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Fry=C4=8D?= Date: Mon, 6 Feb 2017 12:56:36 +0100 Subject: [PATCH 2/2] Adding support fo generating examples with json-schema-faker --- schema/jsonschema.js | 41 ++++++++++++++++++++++++++++------------- 1 file changed, 28 insertions(+), 13 deletions(-) diff --git a/schema/jsonschema.js b/schema/jsonschema.js index f430440..a77bcff 100755 --- a/schema/jsonschema.js +++ b/schema/jsonschema.js @@ -211,6 +211,7 @@ function traverse(schema, p, group) { } var $RefParser = require('json-schema-ref-parser'); +var jsf = require('json-schema-faker'); function build (relativePath, data, element, group) { data = JSON.parse(data); @@ -219,21 +220,35 @@ function build (relativePath, data, element, group) { $RefParser.dereference(relativePath, data, {}, function(err, schema) { if (err) { console.error(err); - done = true; - return; } - var lines = traverse(schema, null, group); - for(var l in lines) { - if (!lines.hasOwnProperty(l)) { continue; } + else if(element.endsWith('Example')) + { + var faker=jsf(schema); + var g = group ? ''+group+' ' : ' Example: '; + var con = ' {json} '+g+'\n'+JSON.stringify(faker,null,4); + var res = { + source: '@'+element+con, + name: element.toLowerCase(), + sourceName: element, + content: con+'\n' + }; + elements.push(res); + } + else + { + var lines = traverse(schema, null, group); + for(var l in lines) { + if (!lines.hasOwnProperty(l)) { continue; } - var res = { - source: '@'+element+' '+lines[l]+'\n', - name: element.toLowerCase(), - sourceName: element, - content: lines[l]+'\n' - }; - elements.push(res); - } + var res = { + source: '@'+element+' '+lines[l]+'\n', + name: element.toLowerCase(), + sourceName: element, + content: lines[l]+'\n' + }; + elements.push(res); + } + } done = true; }); require('deasync').loopWhile(function(){return !done;});