diff --git a/transforms/angle-brackets/transform.js b/transforms/angle-brackets/transform.js index 77991e58..79b57dcc 100755 --- a/transforms/angle-brackets/transform.js +++ b/transforms/angle-brackets/transform.js @@ -124,8 +124,8 @@ function shouldSkipFile(fileInfo, config) { return false; } -function transformAttrs(tagName, attrs, config) { - return attrs.map((a) => { +function transformAttrs(tagName, attrs, nodeParams, config) { + const newAttrs = attrs.map((a) => { let _key = a.key; let _valueType = a.value.type; let _value; @@ -174,6 +174,17 @@ function transformAttrs(tagName, attrs, config) { } return b.attr(_key, _value); }); + + const newValuelessAttrs = nodeParams + .filter((param) => !!param.parts) + .filter((param) => isAttribute(param.parts[0])) + .map((param) => { + const attr = b.attr(param.parts[0], b.text('')); + attr.isValueless = true; + return attr; + }); + + return [...newAttrs, ...newValuelessAttrs]; } function isQueryParam(param) { @@ -299,7 +310,8 @@ function shouldSkipDataTestParams(params, includeValuelessDataTestAttributes) { } function transformNodeAttributes(tagName, node, config) { - let attributes = transformAttrs(tagName, node.hash.pairs, config); + // let attributes = transformAttrs(tagName, node.hash.pairs, config); + let attributes = transformAttrs(tagName, node.hash.pairs, node.params, config); return node.params.concat(attributes); } @@ -389,7 +401,7 @@ function transformNode(node, fileInfo, config) { attributes = transformLinkToAttrs(node.params); } - let namesParams = transformAttrs(tagName, node.hash.pairs, config); + let namesParams = transformAttrs(tagName, node.hash.pairs, node.params, config); attributes = attributes.concat(namesParams); } else { if (nodeHasPositionalParameters(node)) { diff --git a/transforms/angle-brackets/transform.test.js b/transforms/angle-brackets/transform.test.js index af91ebae..86256cf4 100644 --- a/transforms/angle-brackets/transform.test.js +++ b/transforms/angle-brackets/transform.test.js @@ -200,7 +200,7 @@ test('data-test-attributes', () => { - + block @@ -210,16 +210,16 @@ test('data-test-attributes', () => { block - + block - + Recent Posts - + Recent Posts - + Recent Posts @@ -243,6 +243,21 @@ test('data-test-attributes', () => { `); }); +test('data-test-empty-attributes', () => { + let options = { + includeValuelessDataTestAttributes: true, + }; + let input = ` + {{x-foo data-test-foo }} + `; + + expect(runTest('data-test-empty-attributes.hbs', input, options)).toMatchInlineSnapshot(` + " + + " + `); +}); + test('deeply-nested-sub', () => { let input = ` {{#some-component class=(concat foo (some-helper ted (some-dude bar (a b c)))) }}