From f3ec33155690dfe83d5092f485ddd2fa0f5b0abf Mon Sep 17 00:00:00 2001 From: Kyle Fuller Date: Thu, 31 Oct 2019 17:18:34 +0000 Subject: [PATCH] fix(apib): handle parameters without value during serialize --- .../fury-adapter-apib-serializer/CHANGELOG.md | 8 ++++ .../template.nunjucks | 2 +- .../test/fixtures/parameters-no-value.apib | 9 ++++ .../test/fixtures/parameters-no-value.json | 44 +++++++++++++++++++ 4 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 packages/fury-adapter-apib-serializer/test/fixtures/parameters-no-value.apib create mode 100644 packages/fury-adapter-apib-serializer/test/fixtures/parameters-no-value.json diff --git a/packages/fury-adapter-apib-serializer/CHANGELOG.md b/packages/fury-adapter-apib-serializer/CHANGELOG.md index 53f6bfc5d..61686133c 100644 --- a/packages/fury-adapter-apib-serializer/CHANGELOG.md +++ b/packages/fury-adapter-apib-serializer/CHANGELOG.md @@ -1,5 +1,13 @@ # Fury API Blueprint Serializer +## Master + +### Bug Fixes + +- Prevents an exception from being thrown when serializing href variables which + do not include a value. + [#357](https://github.com/apiaryio/api-elements.js/issues/357) + ## 0.12.1 (2019-07-12) ### Bug Fixes diff --git a/packages/fury-adapter-apib-serializer/template.nunjucks b/packages/fury-adapter-apib-serializer/template.nunjucks index 0f42447b3..563d6f441 100644 --- a/packages/fury-adapter-apib-serializer/template.nunjucks +++ b/packages/fury-adapter-apib-serializer/template.nunjucks @@ -50,7 +50,7 @@ FORMAT: 1A {% for item in hrefVariables.content %} {% set typeAttributes = item.attributes.get('typeAttributes') %} - + {{ item.key.toValue() }}{% if item.value.toValue() %}: {{ item.value.toValue() }}{% endif %}{% if typeAttributes %} ({{ typeAttributes.toValue() }}){% endif %}{% if item.description and item.description.toValue() %} - {{ item.description.toValue() }}{% endif %}{% endfor %} + + {{ item.key.toValue() }}{% if item.value and item.value.toValue() %}: {{ item.value.toValue() }}{% endif %}{% if typeAttributes %} ({{ typeAttributes.toValue() }}){% endif %}{% if item.description and item.description.toValue() %} - {{ item.description.toValue() }}{% endif %}{% endfor %} {% endmacro %} diff --git a/packages/fury-adapter-apib-serializer/test/fixtures/parameters-no-value.apib b/packages/fury-adapter-apib-serializer/test/fixtures/parameters-no-value.apib new file mode 100644 index 000000000..32254c5da --- /dev/null +++ b/packages/fury-adapter-apib-serializer/test/fixtures/parameters-no-value.apib @@ -0,0 +1,9 @@ +FORMAT: 1A + +# API Documentation + +### /{?example} + ++ Parameters + + + example diff --git a/packages/fury-adapter-apib-serializer/test/fixtures/parameters-no-value.json b/packages/fury-adapter-apib-serializer/test/fixtures/parameters-no-value.json new file mode 100644 index 000000000..5dffaebf4 --- /dev/null +++ b/packages/fury-adapter-apib-serializer/test/fixtures/parameters-no-value.json @@ -0,0 +1,44 @@ +{ + "element": "parseResult", + "content": [ + { + "element": "category", + "meta": { + "classes": { + "element": "array", + "content": [ + { + "element": "string", + "content": "api" + } + ] + } + }, + "content": [ + { + "element": "resource", + "attributes": { + "href": { + "element": "string", + "content": "/{?example}" + }, + "hrefVariables": { + "element": "hrefVariables", + "content": [ + { + "element": "member", + "content": { + "key": { + "element": "string", + "content": "example" + } + } + } + ] + } + } + } + ] + } + ] +}