From 108ade8b568b9b0a7c6e5fcd62d4499578d72bbb Mon Sep 17 00:00:00 2001 From: Jonas Johan solsvik Date: Thu, 21 Mar 2019 19:19:18 +0100 Subject: [PATCH 1/3] ref #4 - make regular expression stricter by only matching on json|jsonschema|xml --- parser/api_example.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/parser/api_example.js b/parser/api_example.js index a337633..a8a24ea 100644 --- a/parser/api_example.js +++ b/parser/api_example.js @@ -7,7 +7,7 @@ function parse(content) { return null; // @apiExample {json=relative_path} additional_argument - var parseRegExp = /^\{(.+?)=(.+?)\}\s*(?:\s+(.+?))?\s(.+?)$/g; + var parseRegExp = /^\{\s*(json|jsonschema|xml)\s*=(.+?)\}\s*(?:\s+(.+?))?\s(.+?)$/g; var matches = parseRegExp.exec(content); if ( ! matches) From e9d58a810c3d0c276632ae07b689185756fe1776 Mon Sep 17 00:00:00 2001 From: Jonas Johan solsvik Date: Thu, 21 Mar 2019 19:22:32 +0100 Subject: [PATCH 2/3] ref #4 - return unchanged elements if parser fails - This makes it possible to play more nicely with other plugins like {curl=example} --- index.js | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/index.js b/index.js index 0a09301..e1b9bee 100644 --- a/index.js +++ b/index.js @@ -30,15 +30,22 @@ function parserExampleElement(elements, element, block, filename) { } function parserExampleElements(elements, element, block, filename) { - if ( element.name !== 'apiexample' ) { return elements; } - elements.pop(); - const values = elementParser.parse(element.content, element.source); - if (values && schemas[values.schema]) { - app.log.debug('apiexample.path',values.path); - const data = fs.readFileSync( path.join(path.dirname(filename), values.path), 'utf8').toString(); - element = schemas[values.schema](data, values.element, values.title); + if ( element.name !== 'apiexample' ) { + return elements; + } + + const parts = elementParser.parse(element.content, element.source); + if (!parts) { + return elements } + + app.log.debug('apiexample.path', parts.path); + const data = fs.readFileSync(path.join(path.dirname(filename), parts.path), 'utf8').toString(); + + element = schemas[parts.schema](data, parts.element, parts.title); + elements.pop() elements.push(element); + return elements; } From d1af6ca780ed9bbd75d47a634ad252d115a354f1 Mon Sep 17 00:00:00 2001 From: Jonas Johan solsvik Date: Thu, 21 Mar 2019 22:13:01 +0100 Subject: [PATCH 3/3] index.js - renamed parts -> values --- index.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/index.js b/index.js index e1b9bee..5fc0a9b 100644 --- a/index.js +++ b/index.js @@ -35,15 +35,15 @@ function parserExampleElements(elements, element, block, filename) { return elements; } - const parts = elementParser.parse(element.content, element.source); - if (!parts) { + const values = elementParser.parse(element.content, element.source); + if (!values) { return elements } - app.log.debug('apiexample.path', parts.path); - const data = fs.readFileSync(path.join(path.dirname(filename), parts.path), 'utf8').toString(); + app.log.debug('apiexample.path', values.path); + const data = fs.readFileSync(path.join(path.dirname(filename), values.path), 'utf8').toString(); - element = schemas[parts.schema](data, parts.element, parts.title); + element = schemas[values.schema](data, values.element, values.title); elements.pop() elements.push(element);