Skip to content

Commit cac776c

Browse files
shuyaqiancolin-grant-work
authored andcommitted
Modify formatting of perferences to align vscode
Signed-off-by: shuyaqian <[email protected]>
1 parent a8dec8d commit cac776c

File tree

2 files changed

+45
-5
lines changed

2 files changed

+45
-5
lines changed

packages/preferences/src/browser/util/preference-tree-generator.spec.ts

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,37 @@ describe('preference-tree-generator', () => {
5353

5454
it('PreferenceTreeGenerator.format', () => {
5555
const testString = 'aaaBbbCcc Dddd eee';
56-
expect(preferenceTreeGenerator['formatString'](testString)).eq('Aaa Bbb Ccc Dddd Eee');
56+
expect(preferenceTreeGenerator['formatString'](testString)).eq('Aaa Bbb Ccc Dddd eee');
57+
});
58+
59+
it('PreferenceTreeGenerator.format.chinese', () => {
60+
const testString = '某個設定/某个设定';
61+
expect(preferenceTreeGenerator['formatString'](testString)).eq('某個設定/某个设定');
62+
});
63+
64+
it('PreferenceTreeGenerator.format.Danish', () => {
65+
const testString = 'indstillingPåEnØ';
66+
expect(preferenceTreeGenerator['formatString'](testString)).eq('Indstilling På En Ø');
67+
});
68+
69+
it('PreferenceTreeGenerator.format.Greek', () => {
70+
const testString = 'κάποιαΡύθμιση';
71+
expect(preferenceTreeGenerator['formatString'](testString)).eq('Κάποια Ρύθμιση');
72+
});
73+
74+
it('PreferenceTreeGenerator.format.Russian', () => {
75+
const testString = 'некоторыеНастройки';
76+
expect(preferenceTreeGenerator['formatString'](testString)).eq('Некоторые Настройки');
77+
});
78+
79+
it('PreferenceTreeGenerator.format.Armenian', () => {
80+
const testString = 'ինչ-որՊարամետր';
81+
expect(preferenceTreeGenerator['formatString'](testString)).eq('Ինչ-որ Պարամետր');
82+
});
83+
84+
it('PreferenceTreeGenerator.format.specialCharacters', () => {
85+
const testString = 'hyphenated-wordC++Setting';
86+
expect(preferenceTreeGenerator['formatString'](testString)).eq('Hyphenated-word C++ Setting');
5787
});
5888

5989
describe('PreferenceTreeGenerator.createLeafNode', () => {

packages/preferences/src/browser/util/preference-tree-generator.ts

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ export class PreferenceTreeGenerator {
101101
const label = isSubgroup ? subgroupname : groupname;
102102
const newNode = {
103103
id: group,
104-
name: this.toTitleCase(label),
104+
name: this.formatString(label),
105105
visible: true,
106106
parent: root,
107107
children: [],
@@ -136,8 +136,18 @@ export class PreferenceTreeGenerator {
136136
return split;
137137
}
138138

139-
private formatString(string: string): string {
140-
const specifier = this.split(string);
141-
return specifier.map(word => word.slice(0, 1).toLocaleUpperCase() + word.slice(1)).join(' ').trim();
139+
protected formatString(string: string): string {
140+
let formatedString = string[0].toLocaleUpperCase();
141+
for (let i = 1; i < string.length; i++) {
142+
if (this.isUpperCase(string[i]) && !/\s/.test(string[i - 1]) && !this.isUpperCase(string[i - 1])) {
143+
formatedString += ' ';
144+
}
145+
formatedString += string[i];
146+
}
147+
return formatedString.trim();
148+
}
149+
150+
protected isUpperCase(char: string): boolean {
151+
return char === char.toLocaleUpperCase() && char.toLocaleLowerCase() !== char.toLocaleUpperCase();
142152
}
143153
}

0 commit comments

Comments
 (0)