diff --git a/packages/bruno-lang/v2/src/index.js b/packages/bruno-lang/v2/src/index.js index 30ba7fec..577f46e9 100644 --- a/packages/bruno-lang/v2/src/index.js +++ b/packages/bruno-lang/v2/src/index.js @@ -8,11 +8,11 @@ const grammar = ohm.grammar(`Bru { tagend = nl "}" validkey = ~(st | ":") any validvalue = ~nl any - + headers = "headers" st* "{" pairlist? tagend - + pairlist = nl* pair (~tagend nl pair)* (~tagend space)* - pair = st* key st* ":" st* value st* + pair = st* key st* ":" st* value? st* key = ~tagend validkey* value = ~tagend validvalue* @@ -58,7 +58,7 @@ const sem = grammar.createSemantics().addAttribute('ast', { }, pair(_1, key, _2, _3, _4, value, _5) { let res = {}; - res[key.ast] = value.ast; + res[key.ast] = _.get(value, 'ast[0]', ''); return res; }, key(chars) { diff --git a/packages/bruno-lang/v2/tests/headers.spec.js b/packages/bruno-lang/v2/tests/headers.spec.js index 3365bd8b..64c72984 100644 --- a/packages/bruno-lang/v2/tests/headers.spec.js +++ b/packages/bruno-lang/v2/tests/headers.spec.js @@ -56,6 +56,23 @@ headers { assertSingleHeader(input); }); + it("should parse single header with empty value", () => { + const input = ` +headers { + hello: +}`; + + const output = bruToJsonV2(input); + const expected = { + "headers": [{ + "name": "hello", + "value": "", + "enabled": true + }] + }; + expect(output).toEqual(expected); + }); + it("should parse multi headers", () => { const input = ` headers {