diff --git a/packages/bbob-plugin-helper/src/index.js b/packages/bbob-plugin-helper/src/index.js index 9aaed5ca..a69d02ad 100644 --- a/packages/bbob-plugin-helper/src/index.js +++ b/packages/bbob-plugin-helper/src/index.js @@ -63,11 +63,23 @@ const attrsToString = (values) => { .join(' '); }; +/** + * Gets value from + * @example + * getUniqAttr({ 'foo': true, 'bar': bar' }) => 'bar' + * @param attrs + * @returns {string} + */ +const getUniqAttr = (attrs) => Object + .keys(attrs) + .reduce((res, key) => (attrs[key] === key ? attrs[key] : null), null); + export { attrsToString, attrValue, appendToNode, getNodeLength, + getUniqAttr, isTagNode, isStringNode, isEOL, diff --git a/packages/bbob-plugin-helper/test/index.test.js b/packages/bbob-plugin-helper/test/index.test.js index 59f2dfdc..3fc4f302 100644 --- a/packages/bbob-plugin-helper/test/index.test.js +++ b/packages/bbob-plugin-helper/test/index.test.js @@ -3,6 +3,7 @@ import { attrValue, appendToNode, getNodeLength, + getUniqAttr, isTagNode, isStringNode, isEOL, @@ -78,9 +79,17 @@ describe('@bbob/plugin-helper', () => { foo: 'bar', disabled: true })).toBe(` tag="test" foo="bar" disabled`) - }) + }); test('attrsToString undefined', () => { expect(attrsToString(undefined)).toBe('') - }) + }); + + test('getUniqAttr with unq attr', () => { + expect(getUniqAttr({foo: true, 'http://bar.com': 'http://bar.com'})).toBe('http://bar.com') + }); + + test('getUniqAttr without unq attr', () => { + expect(getUniqAttr({foo: true})).toBe(null) + }) }); diff --git a/packages/bbob-preset-html5/src/defaultTags.js b/packages/bbob-preset-html5/src/defaultTags.js index 688198cd..40175a92 100644 --- a/packages/bbob-preset-html5/src/defaultTags.js +++ b/packages/bbob-preset-html5/src/defaultTags.js @@ -1,5 +1,5 @@ /* eslint-disable no-plusplus,no-lonely-if */ -import { isStringNode, isTagNode } from '@bbob/plugin-helper'; +import { isStringNode, isTagNode, getUniqAttr } from '@bbob/plugin-helper'; import TagNode from '@bbob/plugin-helper/lib/TagNode'; const isStartsWith = (node, type) => (node[0] === type); @@ -55,10 +55,6 @@ const asListItems = (content) => { return [].concat(listItems); }; -const getUniqAttr = (attrs) => Object - .keys(attrs) - .reduce((res, key) => (attrs[key] === key ? attrs[key] : null), null); - export default { b: (node) => ({ tag: 'span',