diff --git a/.gitignore b/.gitignore index e9c7c8db8a2..727d4af32ac 100644 --- a/.gitignore +++ b/.gitignore @@ -166,6 +166,8 @@ config/i18n/all-langs.js config/certification-settings.js ### Generated utils files ### +utils/block-nameify.js +utils/block-nameify.test.js utils/slugs.js utils/slugs.test.js utils/index.js diff --git a/.prettierignore b/.prettierignore index 62074c763fe..9c47bebba6e 100644 --- a/.prettierignore +++ b/.prettierignore @@ -8,9 +8,11 @@ config/**/*.json config/i18n/all-langs.js config/certification-settings.js docs/i18n +utils/block-nameify.js +utils/block-nameify.test.js utils/slugs.js utils/slugs.test.js utils/index.js **/package-lock.json web/.next -curriculum-server/data/curriculum.json \ No newline at end of file +curriculum-server/data/curriculum.json diff --git a/utils/block-nameify.d.ts b/utils/block-nameify.d.ts deleted file mode 100644 index 9e73aad654f..00000000000 --- a/utils/block-nameify.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare function blockNameify(phrase: string): string; diff --git a/utils/block-nameify.test.ts b/utils/block-nameify.test.ts new file mode 100644 index 00000000000..861bde0eda4 --- /dev/null +++ b/utils/block-nameify.test.ts @@ -0,0 +1,23 @@ +import { blockNameify } from './block-nameify'; + +describe('blockNameify', () => { + it('should return a preformatted name when it exists', () => { + const result = blockNameify('back-end-development-and-apis'); + expect(result).toBe('Back End Development and APIs'); + }); + + it('should not format prepositions', () => { + const result = blockNameify('and-for-of-the-up-with'); + expect(result).toBe('and for of the up with'); + }); + + it('should format javascript to JavaScript', () => { + const result = blockNameify('javascript'); + expect(result).toBe('JavaScript'); + }); + + it('should transform "-" to " " and uppercase each word', () => { + const result = blockNameify('hello-world'); + expect(result).toBe('Hello World'); + }); +}); diff --git a/utils/block-nameify.js b/utils/block-nameify.ts similarity index 64% rename from utils/block-nameify.js rename to utils/block-nameify.ts index 3467cd8c24f..d805f7512cb 100644 --- a/utils/block-nameify.js +++ b/utils/block-nameify.ts @@ -1,9 +1,10 @@ -const preFormattedBlockNames = require('./preformatted-block-names.json'); +import preFormattedBlockNames from './preformatted-block-names.json'; const noFormatting = ['and', 'for', 'of', 'the', 'up', 'with']; -exports.blockNameify = function blockNameify(phrase) { - const preFormatted = preFormattedBlockNames[phrase] || ''; +export function blockNameify(phrase: string): string { + const preFormatted = + (preFormattedBlockNames as Record)[phrase] || ''; if (preFormatted) { return preFormatted; } @@ -19,4 +20,4 @@ exports.blockNameify = function blockNameify(phrase) { return word.charAt(0).toUpperCase() + word.slice(1); }) .join(' '); -}; +}