From d410d351bf5c3d77ed640ee50f05882681bb919b Mon Sep 17 00:00:00 2001 From: Mateusz Daniluk Date: Wed, 11 Jan 2023 17:34:49 +0100 Subject: [PATCH] fix(annotation): fix default annotation in prop and param now default can include brackets inside. For example CSS attribute selector [[attribute]] or string ["[attribute]"] --- src/annotation/annotations/parameter.js | 2 +- src/annotation/annotations/property.js | 2 +- test/annotations/parameter.test.js | 1 + test/annotations/property.test.js | 7 +++++++ 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/annotation/annotations/parameter.js b/src/annotation/annotations/parameter.js index fa3e63eb..229bd28e 100644 --- a/src/annotation/annotations/parameter.js +++ b/src/annotation/annotations/parameter.js @@ -1,4 +1,4 @@ -const typeRegEx = /^\s*(?:\{(.*)\})?\s*(?:\$?([^\s^\]\[]+))?\s*(?:\[([^\]]*)\])?\s*(?:-?\s*([\s\S]*))?/ +const typeRegEx = /^\s*(?:\{(.*)\})?\s*(?:\$?([^\s^\]\[]+))?\s*(?:\[(.*)]\s)?\s*(?:-?\s*([\s\S]*))?/ export default function parameter (env) { return { diff --git a/src/annotation/annotations/property.js b/src/annotation/annotations/property.js index 6305ae78..c0ee6822 100644 --- a/src/annotation/annotations/property.js +++ b/src/annotation/annotations/property.js @@ -1,4 +1,4 @@ -const reqRegEx = /\s*(?:{(.*)})?\s*(?:(\$?\S+))?\s*(?:\[([^\]]*)])?\s*-?\s*([\S\s]*)\s*$/ +const reqRegEx = /\s*(?:{(.*)})?\s*(?:(\$?\S+))?\s*(?:\[(.*)]\s)?\s*-?\s*([\S\s]*)\s*$/ export default function property () { return { diff --git a/test/annotations/parameter.test.js b/test/annotations/parameter.test.js index bd469310..8212d849 100644 --- a/test/annotations/parameter.test.js +++ b/test/annotations/parameter.test.js @@ -9,6 +9,7 @@ describe('#parameter', function () { it('should return an object', function () { assert.deepEqual(param.parse('{type} $hyphenated-name [default] - description'), { type: 'type', name: 'hyphenated-name', default: 'default', description: 'description' }) assert.deepEqual(param.parse('{type} $name [default] - description [with brackets]'), { type: 'type', name: 'name', default: 'default', description: 'description [with brackets]' }) + assert.deepEqual(param.parse('{type} $name ["[default]"] default with inside brackets, description [with brackets]'), { type: 'type', name: 'name', default: '"[default]"', description: 'default with inside brackets, description [with brackets]' }) assert.deepEqual(param.parse('{List} $list - list to check'), { type: 'List', name: 'list', description: 'list to check' }) }) diff --git a/test/annotations/property.test.js b/test/annotations/property.test.js index 33c4981c..0da13bc6 100644 --- a/test/annotations/property.test.js +++ b/test/annotations/property.test.js @@ -36,6 +36,13 @@ describe('#property', function () { default: 'default', description: 'description [with brackets]' }) + + assert.deepEqual(prop.parse('{Function} base.default ["[default]"] default with inside brackets, description [with brackets]'), { + type: 'Function', + name: 'base.default', + default: '"[default]"', + description: 'default with inside brackets, description [with brackets]' + }) }) it('should work for multiline description', function () {