From 7cb8a7cd1dfa383c7810c54e52f9a37705f7dae2 Mon Sep 17 00:00:00 2001 From: shuyaqian <717749594@qq.com> Date: Wed, 21 Apr 2021 13:03:43 +0800 Subject: [PATCH] Modify formatting of perferences to align vscode Signed-off-by: shuyaqian <717749594@qq.com> --- .../util/preference-tree-generator.spec.ts | 32 ++++++++++++++++++- .../browser/util/preference-tree-generator.ts | 18 ++++++++--- 2 files changed, 45 insertions(+), 5 deletions(-) diff --git a/packages/preferences/src/browser/util/preference-tree-generator.spec.ts b/packages/preferences/src/browser/util/preference-tree-generator.spec.ts index 7a9932736d2e1..063ec1311f58f 100644 --- a/packages/preferences/src/browser/util/preference-tree-generator.spec.ts +++ b/packages/preferences/src/browser/util/preference-tree-generator.spec.ts @@ -53,7 +53,37 @@ describe('preference-tree-generator', () => { it('PreferenceTreeGenerator.format', () => { const testString = 'aaaBbbCcc Dddd eee'; - expect(preferenceTreeGenerator['formatString'](testString)).eq('Aaa Bbb Ccc Dddd Eee'); + expect(preferenceTreeGenerator['formatString'](testString)).eq('Aaa Bbb Ccc Dddd eee'); + }); + + it('PreferenceTreeGenerator.format.chinese', () => { + const testString = '某個設定/某个设定'; + expect(preferenceTreeGenerator['formatString'](testString)).eq('某個設定/某个设定'); + }); + + it('PreferenceTreeGenerator.format.Danish', () => { + const testString = 'indstillingPåEnØ'; + expect(preferenceTreeGenerator['formatString'](testString)).eq('Indstilling På En Ø'); + }); + + it('PreferenceTreeGenerator.format.Greek', () => { + const testString = 'κάποιαΡύθμιση'; + expect(preferenceTreeGenerator['formatString'](testString)).eq('Κάποια Ρύθμιση'); + }); + + it('PreferenceTreeGenerator.format.Russian', () => { + const testString = 'некоторыеНастройки'; + expect(preferenceTreeGenerator['formatString'](testString)).eq('Некоторые Настройки'); + }); + + it('PreferenceTreeGenerator.format.Armenian', () => { + const testString = 'ինչ-որՊարամետր'; + expect(preferenceTreeGenerator['formatString'](testString)).eq('Ինչ-որ Պարամետր'); + }); + + it('PreferenceTreeGenerator.format.specialCharacters', () => { + const testString = 'hyphenated-wordC++Setting'; + expect(preferenceTreeGenerator['formatString'](testString)).eq('Hyphenated-word C++ Setting'); }); describe('PreferenceTreeGenerator.createLeafNode', () => { diff --git a/packages/preferences/src/browser/util/preference-tree-generator.ts b/packages/preferences/src/browser/util/preference-tree-generator.ts index 683fc5c9ba282..ce2526326179c 100644 --- a/packages/preferences/src/browser/util/preference-tree-generator.ts +++ b/packages/preferences/src/browser/util/preference-tree-generator.ts @@ -101,7 +101,7 @@ export class PreferenceTreeGenerator { const label = isSubgroup ? subgroupname : groupname; const newNode = { id: group, - name: this.toTitleCase(label), + name: this.formatString(label), visible: true, parent: root, children: [], @@ -136,8 +136,18 @@ export class PreferenceTreeGenerator { return split; } - private formatString(string: string): string { - const specifier = this.split(string); - return specifier.map(word => word.slice(0, 1).toLocaleUpperCase() + word.slice(1)).join(' ').trim(); + protected formatString(string: string): string { + let formatedString = string[0].toLocaleUpperCase(); + for (let i = 1; i < string.length; i++) { + if (this.isUpperCase(string[i]) && !/\s/.test(string[i - 1]) && !this.isUpperCase(string[i - 1])) { + formatedString += ' '; + } + formatedString += string[i]; + } + return formatedString.trim(); + } + + protected isUpperCase(char: string): boolean { + return char === char.toLocaleUpperCase() && char.toLocaleLowerCase() !== char.toLocaleUpperCase(); } }