diff --git a/lib/generateOutput.js b/lib/generateOutput.js index ce8303c..938b053 100644 --- a/lib/generateOutput.js +++ b/lib/generateOutput.js @@ -29,12 +29,12 @@ exports.generateFunction = function generateFunction(obj, keywords) { isUndefined(obj.description, keywords.descriptionText, outputArr); addClosingParanthesis = true; } - (obj.minLength === undefined) ? '' : outputArr.push(keywords.minimumLengthText + ' ' + obj.minLength); - (obj.maxLength === undefined) ? '' : outputArr.push(keywords.maximumLengthText + ' ' + obj.maxLength); - (obj.pattern === undefined) ? '' : outputArr.push((keywords.patternText + ' ' + obj.pattern)); - (obj.format === undefined) ? '' : outputArr.push((keywords.formatText + ' ' + obj.format)); - (obj.example === undefined) ? '' : outputArr.push((keywords.exampleText + ' ' + obj.example)); - (obj.default === undefined) ? '' : outputArr.push((keywords.defaultText + ' ' + obj.default)); + isUndefined(obj.minLength, keywords.minimumLengthText, outputArr); + isUndefined(obj.maxLength, keywords.maximumLengthText, outputArr); + isUndefined(obj.pattern, keywords.patternText, outputArr); + isUndefined(obj.format, keywords.formatText, outputArr); + isUndefined(obj.example, keywords.exampleText, outputArr); + isUndefined(obj.default, keywords.defaultText, outputArr); str += outputArr.join(keywords.separator + ' '); if (addClosingParanthesis) { str += keywords.closingParanthesis; diff --git a/lib/keywords-mapping.js b/lib/keywords-mapping.js index 084e37e..79ca626 100644 --- a/lib/keywords-mapping.js +++ b/lib/keywords-mapping.js @@ -3,10 +3,10 @@ var keywordMapping = { discriminatorText: "-Discriminator", minimumLengthText: "Minimum Length", maximumLengthText: "Maximum Length", - patternText: "KPattern", + patternText: "Pattern", exampleText: "Example", formatText: "Format", - defaultText: "KDefault", + defaultText: "Default", minimumText: "Minimum", maximumText: "Maximum", multipleOfText: "Multiple Of", @@ -28,12 +28,14 @@ var keywordMapping = { objectEnd: "}", arrayStart: "[", arrayEnd: "]", - arrayText: "array" + arrayText: "array", + enumSeperator: "-" }; var formatMapping = { formatStart: "", - formatEnd: "" + formatEnd: "", + descTitle: "Description added by schematodoc module." } diff --git a/lib/parseSchema.js b/lib/parseSchema.js index 2cd6f27..63c1dec 100644 --- a/lib/parseSchema.js +++ b/lib/parseSchema.js @@ -2,6 +2,7 @@ var _ = require('lodash'); var stream = require('fs'); var alternateFunc = require('./generateOutput'); var keywords = require('./keywords-mapping.js').keywordMapping; +var format = require('./keywords-mapping.js').formatMapping; var yaml = require('js-yaml'); //var jsonToyaml = require('json2yaml'); //require('write-yaml'); @@ -32,8 +33,14 @@ var space10 = ' '; fullInput = getDefinitionFromSwagger(inputFilePath, url, method, keyArr); var obj = {}; var finaloutput = ''; + var descTitle = ''; var finalObj = {}; var methDetail = 'For method ' + method + ', '; + if (options.serializer || '') { + _.merge(keywords, options.serializer); + } + descTitle = (format.formatStart || '') + (format.descTitle || '') + (format.formatEnd || ''); + finaloutput = finaloutput + descTitle; _.each(keyArr, function(key) { _.set(obj, key.key, getToRoot(fullInput.definitions, key.key)); finalObj.method = method; @@ -42,9 +49,7 @@ var space10 = ' '; finalObj.fields = obj; var title = methDetail + finalObj.type + ', ' + finalObj.code + ' \r\n '; - if (options.serializer || '') { - _.merge(keywords, options.serializer); - } + console.log(JSON.stringify(finalObj)); finaloutput = finaloutput + ' \r\n ' + title + buildStr((_.get(finalObj.fields, key.key)).properties, genFunc === undefined ? alternateFunc.generateFunction : genFunc, spacesToAdd, spacesToAdd, keywords); }); @@ -297,7 +302,7 @@ function buildStr(obj, genFunc, spacesToAdd, origSpace, serializer) { } else { if (_.size(property.properties) === 1 && property.properties[0].type === 'string') { - formattedStr = formattedStr + serializer.objectStart + genFunc(property.properties[0], serializer) + serializer.objectEnd; + formattedStr = formattedStr + serializer.openningParanthesis + genFunc(property.properties[0], serializer) + serializer.closingParanthesis; //formattedStr = formattedStr + '{' + buildStr(property.properties, genFunc, spacesToAdd + space2 , spacesToAdd, serializer) + '\r\n' + origSpace + ' ' +'}'; } else if (_.size(property.properties) === 1 && _.has(property.properties[0], 'itemType')) { @@ -418,18 +423,22 @@ function processRef (item, itemObj) { } else if (_.startsWith(propRef, '#')) { var ref = _.last(propRef.split('/')); - if (_.get(fullInput.definitions, ref).type !== undefined) { + var refDefinition = _.get(fullInput.definitions, ref); + if (refDefinition.type !== undefined) { var child = {}; - processType(_.get(fullInput.definitions, ref), child); + processType(refDefinition, child); itemObj.reference = ref; if (_.has(child, 'child')) { itemObj.properties = child.child; } else { itemObj.properties = [child]; } - } else { + } else if (refDefinition.properties !== undefined) { itemObj.reference = ref; - itemObj.properties = processProperties(_.get(fullInput.definitions, ref).properties, _.get(fullInput.definitions, ref).required, _.get(fullInput.definitions, ref).discriminator, _.get(fullInput.definitions, ref).readOnly); + itemObj.properties = processProperties(refDefinition.properties, refDefinition.required, refDefinition.discriminator, refDefinition.readOnly); + } else if (_.has(refDefinition, 'enum')) { + itemObj.type = 'enum'; + _.set(itemObj, 'values' ,_.join( refDefinition.enum, ',')); } } @@ -469,11 +478,12 @@ function buildStringData(item, itemObj) { } if (example !== '') { - itemObj.example = example; + itemObj.example = escapeColon(example); } if (defaultVal !== '') { - itemObj.default = defaultVal; + itemObj.default = escapeColon(defaultVal); + //console.log(itemObj.default); } if (enumVal !== '') { @@ -603,6 +613,13 @@ function isUndefined(propItem) { } } +function escapeColon(value) { + if(value.indexOf(': ') !== -1) { + //console.log(value); + //console.log('i found'); + return value.replace(': ', '\\:\\ '); + } +} function appendTextToAnchorVariable(inputFilePath) { var updated = []; var swaggerFile = stream.readFileSync(inputFilePath, 'utf8');