Merge pull request #119373 from wdesgardin/fix/replace-pattern-preserve-case

fix(search): preserve case when match start with lowercase char
This commit is contained in:
Rob Lourens 2021-03-23 08:50:36 -07:00 committed by GitHub
commit 6349f37d80
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 2 deletions

View file

@ -20,6 +20,8 @@ export function buildReplaceStringWithCasePreserved(matches: string[] | null, pa
return pattern.toLowerCase();
} else if (strings.containsUppercaseCharacter(matches[0][0]) && pattern.length > 0) {
return pattern[0].toUpperCase() + pattern.substr(1);
} else if (matches[0][0].toUpperCase() !== matches[0][0] && pattern.length > 0) {
return pattern[0].toLowerCase() + pattern.substr(1);
} else {
// we don't understand its pattern yet.
return pattern;

View file

@ -200,13 +200,16 @@ suite('Replace Pattern test', () => {
assertReplace(['abc', 'Abc'], 'Def', 'def');
assertReplace(['Abc', 'abc'], 'Def', 'Def');
assertReplace(['ABC', 'abc'], 'Def', 'DEF');
assertReplace(['aBc', 'abc'], 'Def', 'def');
assertReplace(['AbC'], 'Def', 'Def');
assertReplace(['aBC'], 'Def', 'Def');
assertReplace(['aBC'], 'Def', 'def');
assertReplace(['aBc'], 'DeF', 'deF');
assertReplace(['Foo-Bar'], 'newfoo-newbar', 'Newfoo-Newbar');
assertReplace(['Foo-Bar-Abc'], 'newfoo-newbar-newabc', 'Newfoo-Newbar-Newabc');
assertReplace(['Foo-Bar-abc'], 'newfoo-newbar', 'Newfoo-newbar');
assertReplace(['foo-Bar'], 'newfoo-newbar', 'newfoo-Newbar');
assertReplace(['foo-BAR'], 'newfoo-newbar', 'newfoo-NEWBAR');
assertReplace(['foO-BAR'], 'NewFoo-NewBar', 'newFoo-NEWBAR');
assertReplace(['Foo_Bar'], 'newfoo_newbar', 'Newfoo_Newbar');
assertReplace(['Foo_Bar_Abc'], 'newfoo_newbar_newabc', 'Newfoo_Newbar_Newabc');
assertReplace(['Foo_Bar_abc'], 'newfoo_newbar', 'Newfoo_newbar');
@ -228,13 +231,16 @@ suite('Replace Pattern test', () => {
assertReplace(['abc', 'Abc'], 'Def', 'def');
assertReplace(['Abc', 'abc'], 'Def', 'Def');
assertReplace(['ABC', 'abc'], 'Def', 'DEF');
assertReplace(['aBc', 'abc'], 'Def', 'def');
assertReplace(['AbC'], 'Def', 'Def');
assertReplace(['aBC'], 'Def', 'Def');
assertReplace(['aBC'], 'Def', 'def');
assertReplace(['aBc'], 'DeF', 'deF');
assertReplace(['Foo-Bar'], 'newfoo-newbar', 'Newfoo-Newbar');
assertReplace(['Foo-Bar-Abc'], 'newfoo-newbar-newabc', 'Newfoo-Newbar-Newabc');
assertReplace(['Foo-Bar-abc'], 'newfoo-newbar', 'Newfoo-newbar');
assertReplace(['foo-Bar'], 'newfoo-newbar', 'newfoo-Newbar');
assertReplace(['foo-BAR'], 'newfoo-newbar', 'newfoo-NEWBAR');
assertReplace(['foO-BAR'], 'NewFoo-NewBar', 'newFoo-NEWBAR');
assertReplace(['Foo_Bar'], 'newfoo_newbar', 'Newfoo_Newbar');
assertReplace(['Foo_Bar_Abc'], 'newfoo_newbar_newabc', 'Newfoo_Newbar_Newabc');
assertReplace(['Foo_Bar_abc'], 'newfoo_newbar', 'Newfoo_newbar');