diff --git a/docs/common/DocsFilter/utils.js b/docs/common/DocsFilter/utils.js index b18895e1f..22535cb10 100644 --- a/docs/common/DocsFilter/utils.js +++ b/docs/common/DocsFilter/utils.js @@ -1,16 +1,18 @@ import flow from 'lodash/flow'; -import words from 'lodash/words'; -import lowerCase from 'lodash/lowerCase'; +import toLower from 'lodash/toLower'; import deburr from 'lodash/deburr'; import every from 'lodash/every'; import includes from 'lodash/includes'; // normalize a term -const cleanup = flow([lowerCase, deburr]); +const cleanup = flow([toLower, deburr]); // given an input query string, return a list of search terms export function termList(filterText) { - return words(filterText).map(cleanup); + return filterText + .split(' ') + .map(cleanup) + .filter(val => val); } // given a list of search terms, decide whether to match some section or page diff --git a/docs/common/DocsFilter/utils.spec.js b/docs/common/DocsFilter/utils.spec.js new file mode 100644 index 000000000..d01461c89 --- /dev/null +++ b/docs/common/DocsFilter/utils.spec.js @@ -0,0 +1,18 @@ +import { termList, matches } from './utils'; + +console.log(termList, matches); + +test('termList', () => { + expect(termList('Term1 term2')).toEqual(['term1', 'term2']); + expect(termList('lowercase UPPERCASE')).toEqual(['lowercase', 'uppercase']); + expect(termList(' space between')).toEqual(['space', 'between']); + expect(termList(' space between')).toEqual(['space', 'between']); + expect(termList('ĜĚĔĶŜ ĝęėķś')).toEqual(['geeks', 'geeks']); +}); + +test('matches', () => { + expect(matches(termList('KButton'), 'KButton')).toEqual(true); + expect(matches(termList('KButton'), 'KCheckbox')).toEqual(false); + + // TODO - add more complex variations +});