From 676fb23ca885da86b4e9c781a5b5f1469d1591c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mladen=20Jakovljevi=C4=87?= Date: Tue, 8 Mar 2022 18:09:46 +0100 Subject: [PATCH] docs: remove a link from keyword 'never' in code examples (#6845) --- .../transforms/angular-base-package/index.js | 5 +++-- .../services/filterFromInImports.spec.js | 2 +- .../services/filterNeverAsGeneric.spec.js | 17 ++++++++++++++ .../services/filterNeverAsGeneric.ts | 22 +++++++++++++++++++ 4 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 docs_app/tools/transforms/angular-base-package/services/filterNeverAsGeneric.spec.js create mode 100644 docs_app/tools/transforms/angular-base-package/services/filterNeverAsGeneric.ts diff --git a/docs_app/tools/transforms/angular-base-package/index.js b/docs_app/tools/transforms/angular-base-package/index.js index ee19ff082b..6ea00252e0 100644 --- a/docs_app/tools/transforms/angular-base-package/index.js +++ b/docs_app/tools/transforms/angular-base-package/index.js @@ -47,6 +47,7 @@ module.exports = new Package('angular-base', [ .factory(require('./services/filterPipes')) .factory(require('./services/filterAmbiguousDirectiveAliases')) .factory(require('./services/filterFromInImports')) + .factory(require('./services/filterNeverAsGeneric')) .factory(require('./services/getImageDimensions')) .factory(require('./post-processors/add-image-dimensions')) @@ -132,10 +133,10 @@ module.exports = new Package('angular-base', [ computePathsProcessor.pathTemplates = [{ docTypes: ['example-region'], getOutputPath: function () {} }]; }) - .config(function (postProcessHtml, addImageDimensions, autoLinkCode, filterPipes, filterAmbiguousDirectiveAliases, filterFromInImports) { + .config(function (postProcessHtml, addImageDimensions, autoLinkCode, filterPipes, filterAmbiguousDirectiveAliases, filterFromInImports, filterNeverAsGeneric) { addImageDimensions.basePath = path.resolve(AIO_PATH, 'src'); autoLinkCode.customFilters = [filterPipes, filterAmbiguousDirectiveAliases]; - autoLinkCode.wordFilters = [filterFromInImports]; + autoLinkCode.wordFilters = [filterFromInImports, filterNeverAsGeneric]; postProcessHtml.plugins = [ require('./post-processors/autolink-headings'), addImageDimensions, diff --git a/docs_app/tools/transforms/angular-base-package/services/filterFromInImports.spec.js b/docs_app/tools/transforms/angular-base-package/services/filterFromInImports.spec.js index c25a7c79ee..c2fd0d1465 100644 --- a/docs_app/tools/transforms/angular-base-package/services/filterFromInImports.spec.js +++ b/docs_app/tools/transforms/angular-base-package/services/filterFromInImports.spec.js @@ -3,7 +3,7 @@ const filterFromInImports = require('./filterFromInImports')(); const words = ['import', ' { ', 'from', ' } ', 'from', ' \'', 'rxjs', '\';']; const words2 = [' } ', 'from', '(', 'of']; -describe('filterFromInImports(word, index, words)', () => { +describe('filterFromInImports(words, index)', () => { it('should not filter the word, if the word is not "from"', () => { expect(filterFromInImports(words, 0)).toEqual(false); }); diff --git a/docs_app/tools/transforms/angular-base-package/services/filterNeverAsGeneric.spec.js b/docs_app/tools/transforms/angular-base-package/services/filterNeverAsGeneric.spec.js new file mode 100644 index 0000000000..d79ae898b1 --- /dev/null +++ b/docs_app/tools/transforms/angular-base-package/services/filterNeverAsGeneric.spec.js @@ -0,0 +1,17 @@ +const filterNeverAsGeneric = require('./filterNeverAsGeneric')(); + +const words = ['const', ' ', 'never', ': ', 'Observable', '<', 'never', '>;']; + +describe('filterNeverAsGeneric(words, index)', () => { + it('should not filter the word, if the word is not "never"', () => { + expect(filterNeverAsGeneric(words, 0)).toEqual(false); + }); + + it('should not filter the word, if the word "never" is not positioned between < and > signs', () => { + expect(filterNeverAsGeneric(words, 2)).toEqual(false); + }); + + it('should filter "never" when "never" is positioned between < and > signs', () => { + expect(filterNeverAsGeneric(words, 6)).toEqual(true); + }); +}); diff --git a/docs_app/tools/transforms/angular-base-package/services/filterNeverAsGeneric.ts b/docs_app/tools/transforms/angular-base-package/services/filterNeverAsGeneric.ts new file mode 100644 index 0000000000..84e2d9f1a9 --- /dev/null +++ b/docs_app/tools/transforms/angular-base-package/services/filterNeverAsGeneric.ts @@ -0,0 +1,22 @@ +/** + * This filter is filtering word 'never' when 'never' appears as + * generic type. For example, next line: + * + * ``` + * const NEVER: Observable; + * ``` + * + * will filter 'never' in generic declaration of Observable type. + * + * This filter is not perfect at all and does not include many + * cases, such as multiple generic parameter (e.g. ), + * but it should be enough to cover the most use cases. + */ +module.exports = function filterNeverAsGeneric(): (words: string[], index: number) => boolean { + return (words: string[], index: number) => { + const previousWord = words[index - 1]; + const nextWord = words[index + 1]; + + return words[index] === 'never' && //.test(nextWord); + }; +};