1
0
Code Issues Pull Requests Packages Projects Releases Wiki Activity GitHub Gitee

新增点分割转换目标;版本号更新为1.0.10

This commit is contained in:
程序员小墨 2024-07-28 20:56:03 +08:00
parent d4277da88b
commit 762859f9e6
10 changed files with 423 additions and 46 deletions

View File

@ -23,6 +23,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
-->
## 1.0.10
### Added
- Add 4 new conversion types: Dot Case, Dot Camel Case, Dot Pascal Case, Dot Upper Case (新增 4 种转换类型: 点分隔 + 全小写/小驼峰/大驼峰/全大写)
## 1.0.8
### Added

View File

@ -73,6 +73,10 @@ Or right-click on the selected text -> Convert string to...
| 空格分隔 + 小驼峰(驼峰)命名 | Space Camel Case | foo Bar |
| 空格分隔 + 大驼峰(帕斯卡)命名 | Space Pascal Case | Foo Bar |
| 空格分隔 + 全大写命名 | Space Upper Case | FOO BAR |
| 点分隔命名 | Dot Case | foo.bar |
| 点分隔 + 小驼峰(驼峰)命名 | Dot Camel Case | foo.Bar |
| 点分隔 + 大驼峰(帕斯卡)命名 | Dot Pascal Case | Foo.Bar |
| 点分隔 + 全大写命名 | Dot Upper Case | FOO.BAR |
| 全小写 | Lower Case | foo_bar / foobar |
| 全大写 | Upper Case | FOO_BAR / FOOBAR |
@ -81,7 +85,7 @@ Or right-click on the selected text -> Convert string to...
#### 关于文本选区...
- 可以先按住 `Alt` 键不放,再鼠标先后选中多个选区
You can first hold down `Alt`, and then use the mouse to select multiple selection
You can first hold down `Alt`, and then use the mouse to select multiple selection
- 可以先按住 `Shift + Alt` 键不放,再按下鼠标左键,使用鼠标滑过需要选中的区块
You can first hold down `Shift + Alt`, then press the left mouse button, and use the mouse to slide over the block that needs to be selected
- 可以通过 `Ctrl + D` 快捷键选中光标所在的单词

View File

@ -2,9 +2,9 @@
// 插件 id 及名称
"name": "variable-conversion",
"displayName": "Variable Conversion",
"description": "一个强大的变量名转换插件,支持右键菜单、快捷键、状态栏等多种方式使用,支持小驼峰、大驼峰(帕斯卡)、下划线(蛇形)、中划线(连字符/脊柱式)、空格分隔、全小写、全大写等常用命名方式(及组合)转换。 \nA powerful variable naming conversion extension. You can use it through the editer menu, shortcut keys and bottom bar. Support camel, pascal, snake, kebab(spinal), space, lower, upper case, and more.",
"description": "一个强大的变量名转换插件,支持右键菜单、快捷键、状态栏等多种方式使用,支持小驼峰、大驼峰(帕斯卡)、下划线(蛇形)、中划线(连字符/脊柱式)、空格分隔、点分隔、全小写、全大写等常用命名方式(及组合)转换。 \nA powerful variable naming conversion extension. You can use it through the editer menu, shortcut keys and bottom bar. Support camel, pascal, snake, kebab(spinal), space, dot, lower, upper case, and more.",
// 版本号
"version": "1.0.8.1",
"version": "1.0.10",
// logo
"icon": "image/logo.png",
"publisher": "coder-xiaomo",
@ -146,7 +146,24 @@
"command": "variable-conversion.toSpaceCamelCase",
"title": "空格分隔 + 小驼峰(驼峰)命名 (Space Camel Case) [ foo Bar ]"
},
// group-5-upper-lower
// group-5-dot
{
"command": "variable-conversion.toDotCase",
"title": "点分隔命名 (Dot Case) [ foo bar ]"
},
{
"command": "variable-conversion.toDotUpperCase",
"title": "点分隔 + 全大写命名 (Dot Upper Case) [ FOO BAR ]"
},
{
"command": "variable-conversion.toDotPascalCase",
"title": "点分隔 + 大驼峰(帕斯卡)命名 (Dot Pascal Case) [ Foo Bar ]"
},
{
"command": "variable-conversion.toDotCamelCase",
"title": "点分隔 + 小驼峰(驼峰)命名 (Dot Camel Case) [ foo Bar ]"
},
// group-6-upper-lower
{
"command": "variable-conversion.toLowerCase",
"title": "全小写 (Lower Case) [ foobar ]"
@ -266,14 +283,31 @@
"command": "variable-conversion.toSpaceCamelCase",
"group": "group-4-space@4"
},
// group-5-upper-lower
// group-5-dot
{
"command": "variable-conversion.toDotCase",
"group": "group-5-dot@1"
},
{
"command": "variable-conversion.toDotUpperCase",
"group": "group-5-dot@2"
},
{
"command": "variable-conversion.toDotPascalCase",
"group": "group-5-dot@3"
},
{
"command": "variable-conversion.toDotCamelCase",
"group": "group-5-dot@4"
},
// group-6-upper-lower
{
"command": "variable-conversion.toLowerCase",
"group": "group-5-upper-lower@1"
"group": "group-6-upper-lower@1"
},
{
"command": "variable-conversion.toUpperCase",
"group": "group-5-upper-lower@2"
"group": "group-6-upper-lower@2"
}
// 隐藏菜单项
// {

View File

@ -1,8 +1,8 @@
{
"name": "variable-conversion",
"displayName": "Variable Conversion",
"description": "一个强大的变量名转换插件,支持右键菜单、快捷键、状态栏等多种方式使用,支持小驼峰、大驼峰(帕斯卡)、下划线(蛇形)、中划线(连字符/脊柱式)、空格分隔、全小写、全大写等常用命名方式(及组合)转换。 \nA powerful variable naming conversion extension. You can use it through the editer menu, shortcut keys and bottom bar. Support camel, pascal, snake, kebab(spinal), space, lower, upper case, and more.",
"version": "1.0.9",
"description": "一个强大的变量名转换插件,支持右键菜单、快捷键、状态栏等多种方式使用,支持小驼峰、大驼峰(帕斯卡)、下划线(蛇形)、中划线(连字符/脊柱式)、空格分隔、点分隔、全小写、全大写等常用命名方式(及组合)转换。 \nA powerful variable naming conversion extension. You can use it through the editer menu, shortcut keys and bottom bar. Support camel, pascal, snake, kebab(spinal), space, dot, lower, upper case, and more.",
"version": "1.0.10",
"icon": "image/logo.png",
"publisher": "coder-xiaomo",
"engines": {
@ -115,6 +115,22 @@
"command": "variable-conversion.toSpaceCamelCase",
"title": "空格分隔 + 小驼峰(驼峰)命名 (Space Camel Case) [ foo Bar ]"
},
{
"command": "variable-conversion.toDotCase",
"title": "点分隔命名 (Dot Case) [ foo bar ]"
},
{
"command": "variable-conversion.toDotUpperCase",
"title": "点分隔 + 全大写命名 (Dot Upper Case) [ FOO BAR ]"
},
{
"command": "variable-conversion.toDotPascalCase",
"title": "点分隔 + 大驼峰(帕斯卡)命名 (Dot Pascal Case) [ Foo Bar ]"
},
{
"command": "variable-conversion.toDotCamelCase",
"title": "点分隔 + 小驼峰(驼峰)命名 (Dot Camel Case) [ foo Bar ]"
},
{
"command": "variable-conversion.toLowerCase",
"title": "全小写 (Lower Case) [ foobar ]"
@ -194,6 +210,22 @@
"command": "variable-conversion.toSpaceCamelCase",
"group": "group-4-space@4"
},
{
"command": "variable-conversion.toDotCase",
"group": "group-5-dot@1"
},
{
"command": "variable-conversion.toDotUpperCase",
"group": "group-5-dot@2"
},
{
"command": "variable-conversion.toDotPascalCase",
"group": "group-5-dot@3"
},
{
"command": "variable-conversion.toDotCamelCase",
"group": "group-5-dot@4"
},
{
"command": "variable-conversion.toLowerCase",
"group": "group-5-upper-lower@1"

View File

@ -13,7 +13,7 @@ import { transformMutliLineText, transformText } from './transform';
* @since 2024-04-04
*/
export function caseConversion(targetCase: SupportCase, str: string, eol: EOL, cutText: Array<TransformTextResult> | undefined = undefined): string {
let spaceCharacter: '-' | '_' | ' ' | undefined = undefined;
let spaceCharacter: '-' | '_' | ' ' | '.' | undefined = undefined;
switch (targetCase) {
default:
case SupportCase.CAMEL_CASE: // 小驼峰(驼峰)命名
@ -38,6 +38,12 @@ export function caseConversion(targetCase: SupportCase, str: string, eol: EOL, c
case SupportCase.SPACE_UPPER_CASE: // 空格分隔 + 全大写命名
spaceCharacter = ' ';
break;
case SupportCase.DOT_CASE: // 点分隔命名
case SupportCase.DOT_CAMEL_CASE: // 点分隔 + 小驼峰(驼峰)命名
case SupportCase.DOT_PASCAL_CASE: // 点分隔 + 大驼峰(帕斯卡)命名
case SupportCase.DOT_UPPER_CASE: // 点分隔 + 全大写命名
spaceCharacter = '.';
break;
case SupportCase.LOWER_CASE: // 全小写
return str.toLowerCase();
case SupportCase.UPPER_CASE: // 全大写
@ -82,6 +88,7 @@ export function caseConversion(targetCase: SupportCase, str: string, eol: EOL, c
case SupportCase.SNAKE_CAMEL_CASE: // 下划线(蛇形) + 小驼峰(驼峰)命名
case SupportCase.KEBAB_CAMEL_CASE: // 中划线(连字符/脊柱式) + 小驼峰(驼峰)命名
case SupportCase.SPACE_CAMEL_CASE: // 空格分隔 + 小驼峰(驼峰)命名
case SupportCase.DOT_CAMEL_CASE: // 点分隔 + 小驼峰(驼峰)命名
if (isFirstWord) {
transformedWords.push(word);
if (isCurrentWordNormal) {
@ -95,16 +102,19 @@ export function caseConversion(targetCase: SupportCase, str: string, eol: EOL, c
case SupportCase.SNAKE_PASCAL_CASE: // 下划线(蛇形) + 大驼峰(帕斯卡)命名
case SupportCase.KEBAB_PASCAL_CASE: // 中划线(连字符/脊柱式) + 大驼峰(帕斯卡)命名
case SupportCase.SPACE_PASCAL_CASE: // 空格分隔 + 大驼峰(帕斯卡)命名
case SupportCase.DOT_PASCAL_CASE: // 点分隔 + 大驼峰(帕斯卡)命名
transformedWords.push(pascalCaseWord);
break;
case SupportCase.SNAKE_CASE: // 下划线(蛇形)命名
case SupportCase.KEBAB_CASE: // 中划线(连字符/脊柱式)命名
case SupportCase.SPACE_CASE: // 空格分隔命名
case SupportCase.DOT_CASE: // 点分隔命名x
transformedWords.push(word);
break;
case SupportCase.SNAKE_UPPER_CASE: // 下划线(蛇形) + 全大写命名
case SupportCase.KEBAB_UPPER_CASE: // 中划线(连字符/脊柱式) + 全大写命名
case SupportCase.SPACE_UPPER_CASE: // 空格分隔 + 全大写命名
case SupportCase.DOT_UPPER_CASE: // 点分隔 + 全大写命名
transformedWords.push(word.toUpperCase());
break;
default:

View File

@ -54,6 +54,9 @@ export function transformText(input: string): TransformTextResult {
// 替换连字符为 '|' (如有多个则合并)
match = match.replace(/[-_ ]+/g, '|');
// // 替换.时跳过连续点(例如Happy.. angry)
// match = match.replace(/([^.])([.])([^.])/g, '$1|$3');
// 拆分连续的小写字母和大写字母为多个单词
match = match.replace(/([a-z])([A-Z])/g, '$1|$2');

View File

@ -49,29 +49,34 @@ suite('Extension Test: run test case', () => {
}
// 验证转换
for (let eol of eolList) {
assert.strictEqual(testCase.output.camelCase, caseConversion(SupportCase.CAMEL_CASE, input, eol));
assert.strictEqual(testCase.output.pascalCase, caseConversion(SupportCase.PASCAL_CASE, input, eol));
assert.strictEqual(testCase.output.camelCase, caseConversion(SupportCase.CAMEL_CASE, input, eol), 'camel case test failed.');
assert.strictEqual(testCase.output.pascalCase, caseConversion(SupportCase.PASCAL_CASE, input, eol), 'pascal case test failed.');
assert.strictEqual(testCase.output.snakeCase, caseConversion(SupportCase.SNAKE_CASE, input, eol));
assert.strictEqual(testCase.output.snakeCamelCase, caseConversion(SupportCase.SNAKE_CAMEL_CASE, input, eol));
assert.strictEqual(testCase.output.snakePascalCase, caseConversion(SupportCase.SNAKE_PASCAL_CASE, input, eol));
assert.strictEqual(testCase.output.snakeUpperCase, caseConversion(SupportCase.SNAKE_UPPER_CASE, input, eol));
assert.strictEqual(testCase.output.snakeCase, caseConversion(SupportCase.SNAKE_CASE, input, eol), 'snake case test failed.');
assert.strictEqual(testCase.output.snakeCamelCase, caseConversion(SupportCase.SNAKE_CAMEL_CASE, input, eol), 'snake camel case test failed.');
assert.strictEqual(testCase.output.snakePascalCase, caseConversion(SupportCase.SNAKE_PASCAL_CASE, input, eol), 'snake pascal case test failed.');
assert.strictEqual(testCase.output.snakeUpperCase, caseConversion(SupportCase.SNAKE_UPPER_CASE, input, eol), 'snake upper case test failed.');
assert.strictEqual(testCase.output.kebabCase, caseConversion(SupportCase.KEBAB_CASE, input, eol));
assert.strictEqual(testCase.output.kebabCamelCase, caseConversion(SupportCase.KEBAB_CAMEL_CASE, input, eol));
assert.strictEqual(testCase.output.kebabPascalCase, caseConversion(SupportCase.KEBAB_PASCAL_CASE, input, eol));
assert.strictEqual(testCase.output.kebabUpperCase, caseConversion(SupportCase.KEBAB_UPPER_CASE, input, eol));
assert.strictEqual(testCase.output.kebabCase, caseConversion(SupportCase.KEBAB_CASE, input, eol), 'kebab case test failed.');
assert.strictEqual(testCase.output.kebabCamelCase, caseConversion(SupportCase.KEBAB_CAMEL_CASE, input, eol), 'kebab camel case test failed.');
assert.strictEqual(testCase.output.kebabPascalCase, caseConversion(SupportCase.KEBAB_PASCAL_CASE, input, eol), 'kebab pascal case test failed.');
assert.strictEqual(testCase.output.kebabUpperCase, caseConversion(SupportCase.KEBAB_UPPER_CASE, input, eol), 'kebab upper case test failed.');
assert.strictEqual(testCase.output.spaceCase, caseConversion(SupportCase.SPACE_CASE, input, eol));
assert.strictEqual(testCase.output.spaceCamelCase, caseConversion(SupportCase.SPACE_CAMEL_CASE, input, eol));
assert.strictEqual(testCase.output.spacePascalCase, caseConversion(SupportCase.SPACE_PASCAL_CASE, input, eol));
assert.strictEqual(testCase.output.spaceUpperCase, caseConversion(SupportCase.SPACE_UPPER_CASE, input, eol));
assert.strictEqual(testCase.output.spaceCase, caseConversion(SupportCase.SPACE_CASE, input, eol), 'space case test failed.');
assert.strictEqual(testCase.output.spaceCamelCase, caseConversion(SupportCase.SPACE_CAMEL_CASE, input, eol), 'space camel case test failed.');
assert.strictEqual(testCase.output.spacePascalCase, caseConversion(SupportCase.SPACE_PASCAL_CASE, input, eol), 'space pascal case test failed.');
assert.strictEqual(testCase.output.spaceUpperCase, caseConversion(SupportCase.SPACE_UPPER_CASE, input, eol), 'space upper case test failed.');
assert.strictEqual(testCase.output.dotCase, caseConversion(SupportCase.DOT_CASE, input, eol), 'dot case test failed.');
assert.strictEqual(testCase.output.dotCamelCase, caseConversion(SupportCase.DOT_CAMEL_CASE, input, eol), 'dot camel case test failed.');
assert.strictEqual(testCase.output.dotPascalCase, caseConversion(SupportCase.DOT_PASCAL_CASE, input, eol), 'dot pascal case test failed.');
assert.strictEqual(testCase.output.dotUpperCase, caseConversion(SupportCase.DOT_UPPER_CASE, input, eol), 'dot upper case test failed.');
if (testCase.output.lowerCase !== undefined) {
assert.strictEqual(testCase.output.lowerCase, caseConversion(SupportCase.LOWER_CASE, input, eol));
assert.strictEqual(testCase.output.lowerCase, caseConversion(SupportCase.LOWER_CASE, input, eol), 'lower case test failed.');
}
if (testCase.output.upperCase !== undefined) {
assert.strictEqual(testCase.output.upperCase, caseConversion(SupportCase.UPPER_CASE, input, eol));
assert.strictEqual(testCase.output.upperCase, caseConversion(SupportCase.UPPER_CASE, input, eol), 'upper case test failed.');
}
}
}

View File

@ -31,6 +31,10 @@ const testGroups: Array<TestCaseGroup> = [
spaceCamelCase: '',
spacePascalCase: '',
spaceUpperCase: '',
dotCase: '',
dotCamelCase: '',
dotPascalCase: '',
dotUpperCase: '',
lowerCase: '',
upperCase: '',
},
@ -57,6 +61,10 @@ const testGroups: Array<TestCaseGroup> = [
spaceCamelCase: ' ',
spacePascalCase: ' ',
spaceUpperCase: ' ',
dotCase: ' ',
dotCamelCase: ' ',
dotPascalCase: ' ',
dotUpperCase: ' ',
lowerCase: ' ',
upperCase: ' ',
},
@ -84,6 +92,10 @@ const testGroups: Array<TestCaseGroup> = [
spaceCamelCase: ' \r\n ',
spacePascalCase: ' \r\n ',
spaceUpperCase: ' \r\n ',
dotCase: ' \r\n ',
dotCamelCase: ' \r\n ',
dotPascalCase: ' \r\n ',
dotUpperCase: ' \r\n ',
lowerCase: ' \r\n ',
upperCase: ' \r\n ',
},
@ -111,6 +123,10 @@ const testGroups: Array<TestCaseGroup> = [
spaceCamelCase: ' x \r\ny ',
spacePascalCase: ' X \r\nY ',
spaceUpperCase: ' X \r\nY ',
dotCase: ' x \r\ny ',
dotCamelCase: ' x \r\ny ',
dotPascalCase: ' X \r\nY ',
dotUpperCase: ' X \r\nY ',
lowerCase: ' x \r\ny ',
upperCase: ' X \r\nY ',
},
@ -138,6 +154,10 @@ const testGroups: Array<TestCaseGroup> = [
spaceCamelCase: ' \n ',
spacePascalCase: ' \n ',
spaceUpperCase: ' \n ',
dotCase: ' \n ',
dotCamelCase: ' \n ',
dotPascalCase: ' \n ',
dotUpperCase: ' \n ',
lowerCase: ' \n ',
upperCase: ' \n ',
},
@ -165,6 +185,10 @@ const testGroups: Array<TestCaseGroup> = [
spaceCamelCase: ' a\nb ',
spacePascalCase: ' A\nB ',
spaceUpperCase: ' A\nB ',
dotCase: ' a\nb ',
dotCamelCase: ' a\nb ',
dotPascalCase: ' A\nB ',
dotUpperCase: ' A\nB ',
lowerCase: ' a\nb ',
upperCase: ' A\nB ',
},
@ -222,6 +246,18 @@ const testGroups: Array<TestCaseGroup> = [
spaceUpperCase:
"CHINA'S FACTORY ACTIVITY EXPANDED IN MARCH AFTER FIVE CONSECUTIVE MONTHS OF CONTRACTION,AN OFFICIAL SURVEY REVEALED ON SUNDAY,ADDING TO A RUN OF INDICATORS THAT SUGGEST THE STABILIZATION OF THE WORLD'S SECOND LARGEST ECONOMY."
,
dotCase:
"china's.factory.activity.expanded.in.march.after.five.consecutive.months.of.contraction,an.official.survey.revealed.on.sunday,adding.to.a.run.of.indicators.that.suggest.the.stabilization.of.the.world's.second.largest.economy."
,
dotCamelCase:
"china'S.Factory.Activity.Expanded.In.March.After.Five.Consecutive.Months.Of.Contraction,An.Official.Survey.Revealed.On.Sunday,Adding.To.A.Run.Of.Indicators.That.Suggest.The.Stabilization.Of.The.World'S.Second.Largest.Economy."
,
dotPascalCase:
"China'S.Factory.Activity.Expanded.In.March.After.Five.Consecutive.Months.Of.Contraction,An.Official.Survey.Revealed.On.Sunday,Adding.To.A.Run.Of.Indicators.That.Suggest.The.Stabilization.Of.The.World'S.Second.Largest.Economy."
,
dotUpperCase:
"CHINA'S.FACTORY.ACTIVITY.EXPANDED.IN.MARCH.AFTER.FIVE.CONSECUTIVE.MONTHS.OF.CONTRACTION,AN.OFFICIAL.SURVEY.REVEALED.ON.SUNDAY,ADDING.TO.A.RUN.OF.INDICATORS.THAT.SUGGEST.THE.STABILIZATION.OF.THE.WORLD'S.SECOND.LARGEST.ECONOMY."
,
lowerCase:
"china's factory activity expanded in march after five consecutive months of contraction, an official survey revealed on sunday, adding to a run of indicators that suggest the stabilization of the world's second-largest economy."
,
@ -253,6 +289,10 @@ const testGroups: Array<TestCaseGroup> = [
spaceCamelCase: 'entity2Map',
spacePascalCase: 'Entity2Map',
spaceUpperCase: 'ENTITY2MAP',
dotCase: 'entity2map',
dotCamelCase: 'entity2Map',
dotPascalCase: 'Entity2Map',
dotUpperCase: 'ENTITY2MAP',
lowerCase: 'entity2map',
upperCase: 'ENTITY2MAP',
},
@ -283,6 +323,10 @@ const testGroups: Array<TestCaseGroup> = [
spaceCamelCase: 'how Do You\bDo?\n how Do You\tDo!',
spacePascalCase: 'How Do You\bDo?\n How Do You\tDo!',
spaceUpperCase: 'HOW DO YOU\bDO?\n HOW DO YOU\tDO!',
dotCase: 'how.do.you\bdo?\n how.do.you\tdo!',
dotCamelCase: 'how.Do.You\bDo?\n how.Do.You\tDo!',
dotPascalCase: 'How.Do.You\bDo?\n How.Do.You\tDo!',
dotUpperCase: 'HOW.DO.YOU\bDO?\n HOW.DO.YOU\tDO!',
lowerCase: 'how do you\bdo?\n how do you\tdo!',
upperCase: 'HOW DO YOU\bDO?\n HOW DO YOU\tDO!',
},
@ -312,6 +356,10 @@ const testGroups: Array<TestCaseGroup> = [
spaceCamelCase: '今天是星期日',
spacePascalCase: '今天是星期日',
spaceUpperCase: '今天是星期日',
dotCase: '今天是星期日',
dotCamelCase: '今天是星期日',
dotPascalCase: '今天是星期日',
dotUpperCase: '今天是星期日',
lowerCase: '今天是星期日',
upperCase: '今天是星期日',
},
@ -340,6 +388,10 @@ const testGroups: Array<TestCaseGroup> = [
spaceCamelCase: '担心你d Af=Coffee—爸妈不在家— ',
spacePascalCase: '担心你D Af=Coffee—爸妈不在家— ',
spaceUpperCase: '担心你D AF=COFFEE—爸妈不在家— ',
dotCase: '担心你d.af=coffee—爸妈不在家— ',
dotCamelCase: '担心你d.Af=Coffee—爸妈不在家— ',
dotPascalCase: '担心你D.Af=Coffee—爸妈不在家— ',
dotUpperCase: '担心你D.AF=COFFEE—爸妈不在家— ',
lowerCase: '--担心你daf_=coffee—爸妈不在家_— ',
upperCase: '--担心你DAF_=COFFEE—爸妈不在家_— ',
},
@ -347,29 +399,33 @@ const testGroups: Array<TestCaseGroup> = [
{
title: 'Special character with emoji input',
input:
'🥰 a-cup/_of Coffee🍻,-_please!. '
'🥰 a-cup/_of Coffee🍻,-_please.thanks!. '
,
eol: [LF, CRLF],
transformText: [
'🥰|a|cup|/|of|coffee|🍻,|please|!. ',
'🥰|a|cup|/|of|coffee|🍻,|please|.|thanks|!. ',
],
output: {
camelCase: '🥰aCup/OfCoffee🍻,Please!. ',
pascalCase: '🥰ACup/OfCoffee🍻,Please!. ',
snakeCase: '🥰a_cup/of_coffee🍻,please!. ',
snakeCamelCase: '🥰a_Cup/Of_Coffee🍻,Please!. ',
snakePascalCase: '🥰A_Cup/Of_Coffee🍻,Please!. ',
snakeUpperCase: '🥰A_CUP/OF_COFFEE🍻,PLEASE!. ',
kebabCase: '🥰a-cup/of-coffee🍻,please!. ',
kebabCamelCase: '🥰a-Cup/Of-Coffee🍻,Please!. ',
kebabPascalCase: '🥰A-Cup/Of-Coffee🍻,Please!. ',
kebabUpperCase: '🥰A-CUP/OF-COFFEE🍻,PLEASE!. ',
spaceCase: '🥰a cup/of coffee🍻,please!. ',
spaceCamelCase: '🥰a Cup/Of Coffee🍻,Please!. ',
spacePascalCase: '🥰A Cup/Of Coffee🍻,Please!. ',
spaceUpperCase: '🥰A CUP/OF COFFEE🍻,PLEASE!. ',
lowerCase: '🥰 a-cup/_of coffee🍻,-_please!. ',
upperCase: '🥰 A-CUP/_OF COFFEE🍻,-_PLEASE!. ',
camelCase: '🥰aCup/OfCoffee🍻,Please.Thanks!. ',
pascalCase: '🥰ACup/OfCoffee🍻,Please.Thanks!. ',
snakeCase: '🥰a_cup/of_coffee🍻,please.thanks!. ',
snakeCamelCase: '🥰a_Cup/Of_Coffee🍻,Please.Thanks!. ',
snakePascalCase: '🥰A_Cup/Of_Coffee🍻,Please.Thanks!. ',
snakeUpperCase: '🥰A_CUP/OF_COFFEE🍻,PLEASE.THANKS!. ',
kebabCase: '🥰a-cup/of-coffee🍻,please.thanks!. ',
kebabCamelCase: '🥰a-Cup/Of-Coffee🍻,Please.Thanks!. ',
kebabPascalCase: '🥰A-Cup/Of-Coffee🍻,Please.Thanks!. ',
kebabUpperCase: '🥰A-CUP/OF-COFFEE🍻,PLEASE.THANKS!. ',
spaceCase: '🥰a cup/of coffee🍻,please.thanks!. ',
spaceCamelCase: '🥰a Cup/Of Coffee🍻,Please.Thanks!. ',
spacePascalCase: '🥰A Cup/Of Coffee🍻,Please.Thanks!. ',
spaceUpperCase: '🥰A CUP/OF COFFEE🍻,PLEASE.THANKS!. ',
dotCase: '🥰a.cup/of.coffee🍻,please.thanks!. ',
dotCamelCase: '🥰a.Cup/Of.Coffee🍻,Please.Thanks!. ',
dotPascalCase: '🥰A.Cup/Of.Coffee🍻,Please.Thanks!. ',
dotUpperCase: '🥰A.CUP/OF.COFFEE🍻,PLEASE.THANKS!. ',
lowerCase: '🥰 a-cup/_of coffee🍻,-_please.thanks!. ',
upperCase: '🥰 A-CUP/_OF COFFEE🍻,-_PLEASE.THANKS!. ',
},
},
{
@ -396,6 +452,10 @@ const testGroups: Array<TestCaseGroup> = [
spaceCamelCase: 'take A Rest😊Ha P Py,😢Tri Ste,Enfadado,驚きました,❤️,笑,😎C Ool,😳Embarrassed',
spacePascalCase: 'Take A Rest😊Ha P Py,😢Tri Ste,Enfadado,驚きました,❤️,笑,😎C Ool,😳Embarrassed',
spaceUpperCase: 'TAKE A REST😊HA P PY,😢TRI STE,ENFADADO,驚きました,❤️,笑,😎C OOL,😳EMBARRASSED',
dotCase: 'take.a.rest😊ha.p.py,😢tri.ste,enfadado,驚きました,❤️,笑,😎c.ool,😳embarrassed',
dotCamelCase: 'take.A.Rest😊Ha.P.Py,😢Tri.Ste,Enfadado,驚きました,❤️,笑,😎C.Ool,😳Embarrassed',
dotPascalCase: 'Take.A.Rest😊Ha.P.Py,😢Tri.Ste,Enfadado,驚きました,❤️,笑,😎C.Ool,😳Embarrassed',
dotUpperCase: 'TAKE.A.REST😊HA.P.PY,😢TRI.STE,ENFADADO,驚きました,❤️,笑,😎C.OOL,😳EMBARRASSED',
lowerCase: 'takearest😊happy,😢triste,enfadado, 驚きました,❤️, 笑, 😎cool, 😳-embarrassed',
upperCase: 'TAKEAREST😊HAPPY,😢TRISTE,ENFADADO, 驚きました,❤️, 笑, 😎COOL, 😳-EMBARRASSED',
},
@ -424,6 +484,10 @@ const testGroups: Array<TestCaseGroup> = [
spaceCamelCase: ' n H D As+90Usz&* ',
spacePascalCase: ' N H D As+90Usz&* ',
spaceUpperCase: ' N H D AS+90USZ&* ',
dotCase: ' n.h.d.as+90usz&* ',
dotCamelCase: ' n.H.D.As+90Usz&* ',
dotPascalCase: ' N.H.D.As+90Usz&* ',
dotUpperCase: ' N.H.D.AS+90USZ&* ',
lowerCase: ' nhdas--+90-usz&* ',
upperCase: ' NHDAS--+90-USZ&* ',
},
@ -452,6 +516,10 @@ const testGroups: Array<TestCaseGroup> = [
spaceCamelCase: 'fsdi Sdacsaf+Desd',
spacePascalCase: 'Fsdi Sdacsaf+Desd',
spaceUpperCase: 'FSDI SDACSAF+DESD',
dotCase: 'fsdi.sdacsaf+desd',
dotCamelCase: 'fsdi.Sdacsaf+Desd',
dotPascalCase: 'Fsdi.Sdacsaf+Desd',
dotUpperCase: 'FSDI.SDACSAF+DESD',
lowerCase: 'fsdi_sdacsaf+desd',
upperCase: 'FSDI_SDACSAF+DESD',
},
@ -490,6 +558,10 @@ const testGroups: Array<TestCaseGroup> = [
spaceCamelCase: 'foo Bar',
spacePascalCase: 'Foo Bar',
spaceUpperCase: 'FOO BAR',
dotCase: 'foo.bar',
dotCamelCase: 'foo.Bar',
dotPascalCase: 'Foo.Bar',
dotUpperCase: 'FOO.BAR',
// lowerCase: 'foo--bar',
// upperCase: 'FOO--BAR',
},
@ -523,6 +595,10 @@ const testGroups: Array<TestCaseGroup> = [
spaceCamelCase: 'test Case',
spacePascalCase: 'Test Case',
spaceUpperCase: 'TEST CASE',
dotCase: 'test.case',
dotCamelCase: 'test.Case',
dotPascalCase: 'Test.Case',
dotUpperCase: 'TEST.CASE',
// lowerCase: 'test case',
// upperCase: 'TEST CASE',
},
@ -553,6 +629,10 @@ const testGroups: Array<TestCaseGroup> = [
spaceCamelCase: 'apple',
spacePascalCase: 'Apple',
spaceUpperCase: 'APPLE',
dotCase: 'apple',
dotCamelCase: 'apple',
dotPascalCase: 'Apple',
dotUpperCase: 'APPLE',
lowerCase: 'apple',
upperCase: 'APPLE',
},
@ -581,6 +661,10 @@ const testGroups: Array<TestCaseGroup> = [
spaceCamelCase: 'pine Apple',
spacePascalCase: 'Pine Apple',
spaceUpperCase: 'PINE APPLE',
dotCase: 'pine.apple',
dotCamelCase: 'pine.Apple',
dotPascalCase: 'Pine.Apple',
dotUpperCase: 'PINE.APPLE',
lowerCase: 'pineapple',
upperCase: 'PINEAPPLE',
},
@ -618,10 +702,84 @@ const testGroups: Array<TestCaseGroup> = [
spaceCamelCase: 'have A Nice Day!',
spacePascalCase: 'Have A Nice Day!',
spaceUpperCase: 'HAVE A NICE DAY!',
dotCase: 'have.a.nice.day!',
dotCamelCase: 'have.A.Nice.Day!',
dotPascalCase: 'Have.A.Nice.Day!',
dotUpperCase: 'HAVE.A.NICE.DAY!',
// lowerCase: 'have a nice day!',
// upperCase: 'HAVE A NICE DAY!',
},
},
{
title: 'Normal input (Dot input: Every day of your life)',
input: '.Every day of your life.. it is..important..to take.the.time to “smell the roses” — to appreciate the experiences that lead to happiness. This is part of being truly happy.',
eol: [LF, CRLF],
transformText: [
'.|every|day|of|your|life|..|it|is|..|important|..|to|take|.|the|.|time|to|“|smell|the|roses|”|—|to|appreciate|the|experiences|that|lead|to|happiness|.|this|is|part|of|being|truly|happy|.',
],
output: {
camelCase:
'.everyDayOfYourLife..ItIs..Important..ToTake.The.TimeTo“SmellTheRoses”—ToAppreciateTheExperiencesThatLeadToHappiness.ThisIsPartOfBeingTrulyHappy.'
,
pascalCase:
'.EveryDayOfYourLife..ItIs..Important..ToTake.The.TimeTo“SmellTheRoses”—ToAppreciateTheExperiencesThatLeadToHappiness.ThisIsPartOfBeingTrulyHappy.'
,
snakeCase:
'.every_day_of_your_life..it_is..important..to_take.the.time_to“smell_the_roses”—to_appreciate_the_experiences_that_lead_to_happiness.this_is_part_of_being_truly_happy.'
,
snakeCamelCase:
'.every_Day_Of_Your_Life..It_Is..Important..To_Take.The.Time_To“Smell_The_Roses”—To_Appreciate_The_Experiences_That_Lead_To_Happiness.This_Is_Part_Of_Being_Truly_Happy.'
,
snakePascalCase:
'.Every_Day_Of_Your_Life..It_Is..Important..To_Take.The.Time_To“Smell_The_Roses”—To_Appreciate_The_Experiences_That_Lead_To_Happiness.This_Is_Part_Of_Being_Truly_Happy.'
,
snakeUpperCase:
'.EVERY_DAY_OF_YOUR_LIFE..IT_IS..IMPORTANT..TO_TAKE.THE.TIME_TO“SMELL_THE_ROSES”—TO_APPRECIATE_THE_EXPERIENCES_THAT_LEAD_TO_HAPPINESS.THIS_IS_PART_OF_BEING_TRULY_HAPPY.'
,
kebabCase:
'.every-day-of-your-life..it-is..important..to-take.the.time-to“smell-the-roses”—to-appreciate-the-experiences-that-lead-to-happiness.this-is-part-of-being-truly-happy.'
,
kebabCamelCase:
'.every-Day-Of-Your-Life..It-Is..Important..To-Take.The.Time-To“Smell-The-Roses”—To-Appreciate-The-Experiences-That-Lead-To-Happiness.This-Is-Part-Of-Being-Truly-Happy.'
,
kebabPascalCase:
'.Every-Day-Of-Your-Life..It-Is..Important..To-Take.The.Time-To“Smell-The-Roses”—To-Appreciate-The-Experiences-That-Lead-To-Happiness.This-Is-Part-Of-Being-Truly-Happy.'
,
kebabUpperCase:
'.EVERY-DAY-OF-YOUR-LIFE..IT-IS..IMPORTANT..TO-TAKE.THE.TIME-TO“SMELL-THE-ROSES”—TO-APPRECIATE-THE-EXPERIENCES-THAT-LEAD-TO-HAPPINESS.THIS-IS-PART-OF-BEING-TRULY-HAPPY.'
,
spaceCase:
'.every day of your life..it is..important..to take.the.time to“smell the roses”—to appreciate the experiences that lead to happiness.this is part of being truly happy.'
,
spaceCamelCase:
'.every Day Of Your Life..It Is..Important..To Take.The.Time To“Smell The Roses”—To Appreciate The Experiences That Lead To Happiness.This Is Part Of Being Truly Happy.'
,
spacePascalCase:
'.Every Day Of Your Life..It Is..Important..To Take.The.Time To“Smell The Roses”—To Appreciate The Experiences That Lead To Happiness.This Is Part Of Being Truly Happy.'
,
spaceUpperCase:
'.EVERY DAY OF YOUR LIFE..IT IS..IMPORTANT..TO TAKE.THE.TIME TO“SMELL THE ROSES”—TO APPRECIATE THE EXPERIENCES THAT LEAD TO HAPPINESS.THIS IS PART OF BEING TRULY HAPPY.'
,
dotCase:
'.every.day.of.your.life..it.is..important..to.take.the.time.to“smell.the.roses”—to.appreciate.the.experiences.that.lead.to.happiness.this.is.part.of.being.truly.happy.'
,
dotCamelCase:
'.every.Day.Of.Your.Life..It.Is..Important..To.Take.The.Time.To“Smell.The.Roses”—To.Appreciate.The.Experiences.That.Lead.To.Happiness.This.Is.Part.Of.Being.Truly.Happy.'
,
dotPascalCase:
'.Every.Day.Of.Your.Life..It.Is..Important..To.Take.The.Time.To“Smell.The.Roses”—To.Appreciate.The.Experiences.That.Lead.To.Happiness.This.Is.Part.Of.Being.Truly.Happy.'
,
dotUpperCase:
'.EVERY.DAY.OF.YOUR.LIFE..IT.IS..IMPORTANT..TO.TAKE.THE.TIME.TO“SMELL.THE.ROSES”—TO.APPRECIATE.THE.EXPERIENCES.THAT.LEAD.TO.HAPPINESS.THIS.IS.PART.OF.BEING.TRULY.HAPPY.'
,
lowerCase:
'.every day of your life.. it is..important..to take.the.time to “smell the roses” — to appreciate the experiences that lead to happiness. this is part of being truly happy.'
,
upperCase:
'.EVERY DAY OF YOUR LIFE.. IT IS..IMPORTANT..TO TAKE.THE.TIME TO “SMELL THE ROSES” — TO APPRECIATE THE EXPERIENCES THAT LEAD TO HAPPINESS. THIS IS PART OF BEING TRULY HAPPY.'
,
},
},
{
title: 'Normal input (a-nice-day!)',
input: [
@ -653,6 +811,10 @@ const testGroups: Array<TestCaseGroup> = [
spaceCamelCase: ' a Nice Day! ',
spacePascalCase: ' A Nice Day! ',
spaceUpperCase: ' A NICE DAY! ',
dotCase: ' a.nice.day! ',
dotCamelCase: ' a.Nice.Day! ',
dotPascalCase: ' A.Nice.Day! ',
dotUpperCase: ' A.NICE.DAY! ',
// lowerCase: ' a nice day! ',
// upperCase: ' A NICE DAY! ',
},
@ -682,6 +844,10 @@ const testGroups: Array<TestCaseGroup> = [
spaceCamelCase: ' a Nice Day',
spacePascalCase: ' A Nice Day',
spaceUpperCase: ' A NICE DAY',
dotCase: ' a.nice.day',
dotCamelCase: ' a.Nice.Day',
dotPascalCase: ' A.Nice.Day',
dotUpperCase: ' A.NICE.DAY',
// lowerCase: ' a nice-day-',
// upperCase: ' A NICE-DAY-',
},
@ -710,6 +876,10 @@ const testGroups: Array<TestCaseGroup> = [
spaceCamelCase: 'tom Likes Eat Ice Cream.',
spacePascalCase: 'Tom Likes Eat Ice Cream.',
spaceUpperCase: 'TOM LIKES EAT ICE CREAM.',
dotCase: 'tom.likes.eat.ice.cream.',
dotCamelCase: 'tom.Likes.Eat.Ice.Cream.',
dotPascalCase: 'Tom.Likes.Eat.Ice.Cream.',
dotUpperCase: 'TOM.LIKES.EAT.ICE.CREAM.',
lowerCase: 'tomlikes eat icecream.',
upperCase: 'TOMLIKES EAT ICECREAM.',
},
@ -739,6 +909,10 @@ const testGroups: Array<TestCaseGroup> = [
spaceCamelCase: ' apple2Tree ',
spacePascalCase: ' Apple2Tree ',
spaceUpperCase: ' APPLE2TREE ',
dotCase: ' apple2tree ',
dotCamelCase: ' apple2Tree ',
dotPascalCase: ' Apple2Tree ',
dotUpperCase: ' APPLE2TREE ',
// lowerCase: ' apple2-tree ',
// upperCase: ' APPLE2-TREE ',
},
@ -767,6 +941,10 @@ const testGroups: Array<TestCaseGroup> = [
spaceCamelCase: ' julius Caesar,William Shakespeare,Albert Einstein,Marie Curie,Wolfgang Amadeus Mozart,Vincent Van Gogh. ',
spacePascalCase: ' Julius Caesar,William Shakespeare,Albert Einstein,Marie Curie,Wolfgang Amadeus Mozart,Vincent Van Gogh. ',
spaceUpperCase: ' JULIUS CAESAR,WILLIAM SHAKESPEARE,ALBERT EINSTEIN,MARIE CURIE,WOLFGANG AMADEUS MOZART,VINCENT VAN GOGH. ',
dotCase: ' julius.caesar,william.shakespeare,albert.einstein,marie.curie,wolfgang.amadeus.mozart,vincent.van.gogh. ',
dotCamelCase: ' julius.Caesar,William.Shakespeare,Albert.Einstein,Marie.Curie,Wolfgang.Amadeus.Mozart,Vincent.Van.Gogh. ',
dotPascalCase: ' Julius.Caesar,William.Shakespeare,Albert.Einstein,Marie.Curie,Wolfgang.Amadeus.Mozart,Vincent.Van.Gogh. ',
dotUpperCase: ' JULIUS.CAESAR,WILLIAM.SHAKESPEARE,ALBERT.EINSTEIN,MARIE.CURIE,WOLFGANG.AMADEUS.MOZART,VINCENT.VAN.GOGH. ',
lowerCase: ' julius_caesar, william_shakespeare, albert_einstein, marie_curie, wolfgangamadeusmozart, vincent-van-gogh. ',
upperCase: ' JULIUS_CAESAR, WILLIAM_SHAKESPEARE, ALBERT_EINSTEIN, MARIE_CURIE, WOLFGANGAMADEUSMOZART, VINCENT-VAN-GOGH. ',
},
@ -839,6 +1017,22 @@ const testGroups: Array<TestCaseGroup> = [
' &QUOT;YOU&QUOT;(OR&QUOT;YOUR&QUOT;)SHALL MEAN AN INDIVIDUAL OR LEGAL ENTITY\n' +
' EXERCISING PERMISSIONS GRANTED BY THIS LICENSE.'
,
dotCase:
' &quot;you&quot;(or&quot;your&quot;)shall.mean.an.individual.or.legal.entity\n' +
' exercising.permissions.granted.by.this.license.'
,
dotCamelCase:
' &quot;You&Quot;(Or&Quot;Your&Quot;)Shall.Mean.An.Individual.Or.Legal.Entity\n' +
' exercising.Permissions.Granted.By.This.License.'
,
dotPascalCase:
' &Quot;You&Quot;(Or&Quot;Your&Quot;)Shall.Mean.An.Individual.Or.Legal.Entity\n' +
' Exercising.Permissions.Granted.By.This.License.'
,
dotUpperCase:
' &QUOT;YOU&QUOT;(OR&QUOT;YOUR&QUOT;)SHALL.MEAN.AN.INDIVIDUAL.OR.LEGAL.ENTITY\n' +
' EXERCISING.PERMISSIONS.GRANTED.BY.THIS.LICENSE.'
,
lowerCase:
' &quot;you&quot; (or &quot;your&quot;) shall mean an individual or legal entity\n' +
' exercising permissions granted by this license.'
@ -888,6 +1082,10 @@ const testGroups: Array<TestCaseGroup> = [
// spaceCamelCase: '',
// spacePascalCase: '',
// spaceUpperCase: '',
// dotCase: '',
// dotCamelCase: '',
// dotPascalCase: '',
// dotUpperCase: '',
// lowerCase: '',
// upperCase: '',
// },

View File

@ -158,6 +158,46 @@ export enum SupportCase {
*/
SPACE_UPPER_CASE,
/**
*
* Dot Case / Spinal Case
* e.g. foo bar
*
* @alias: dotCase / DotCase / dot case / dot_case / DOT_CASE
* @since 2024-06-13
*/
DOT_CASE,
/**
* + ()
* Dot Camel Case
* e.g. foo Bar
*
* @alias: dotCamelCase / DotCamelCase / dot camel case / dot_camel_case / DOT_CAMEL_CASE
* @since 2024-06-13
*/
DOT_CAMEL_CASE,
/**
* + ()
* Dot Pascal Case
* e.g. Foo Bar
*
* @alias: dotPascalCase / DotPascalCase / dot pascal case / dot_pascal_case / DOT_PASCAL_CASE
* @since 2024-06-13
*/
DOT_PASCAL_CASE,
/**
* +
* Dot Upper Case
* e.g. FOO BAR
*
* @alias: dotUpperCase / DotUpperCase / dot upper case / dot_upper_case / DOT_UPPER_CASE
* @since 2024-06-13
*/
DOT_UPPER_CASE,
/**
*
* Lower Case
@ -215,6 +255,13 @@ const keyword = {
'KongGe',
'kg',
],
dot: [
'点', '.',
'Dot Case',
'dc',
'Dian',
'd',
],
upper: [
'全大写', '大写',
'Upper Case',
@ -253,6 +300,11 @@ export const commands: Array<{ command: string; targetCase: SupportCase }> = [
{ command: 'variable-conversion.toSpacePascalCase', targetCase: SupportCase.SPACE_PASCAL_CASE },
{ command: 'variable-conversion.toSpaceCamelCase', targetCase: SupportCase.SPACE_CAMEL_CASE },
{ command: 'variable-conversion.toDotCase', targetCase: SupportCase.DOT_CASE },
{ command: 'variable-conversion.toDotUpperCase', targetCase: SupportCase.DOT_UPPER_CASE },
{ command: 'variable-conversion.toDotPascalCase', targetCase: SupportCase.DOT_PASCAL_CASE },
{ command: 'variable-conversion.toDotCamelCase', targetCase: SupportCase.DOT_CAMEL_CASE },
{ command: 'variable-conversion.toLowerCase', targetCase: SupportCase.LOWER_CASE },
{ command: 'variable-conversion.toUpperCase', targetCase: SupportCase.UPPER_CASE },
];
@ -346,6 +398,30 @@ export const quickPickSupportCases = [
shortName: '脊柱大写',
keyword: [...keyword.space, ...keyword.upper],
},
{
type: SupportCase.DOT_CASE,
name: '点分隔命名',
shortName: '脊柱',
keyword: [...keyword.dot, ...keyword.lower],
},
{
type: SupportCase.DOT_CAMEL_CASE,
name: '点分隔 + 小驼峰(驼峰)命名',
shortName: '脊柱驼峰',
keyword: [...keyword.dot, ...keyword.camel],
},
{
type: SupportCase.DOT_PASCAL_CASE,
name: '点分隔 + 大驼峰(帕斯卡)命名',
shortName: '脊柱帕斯卡',
keyword: [...keyword.dot, ...keyword.pascal],
},
{
type: SupportCase.DOT_UPPER_CASE,
name: '点分隔 + 全大写命名',
shortName: '脊柱大写',
keyword: [...keyword.dot, ...keyword.upper],
},
{
type: SupportCase.LOWER_CASE,
name: '全小写',
@ -370,18 +446,22 @@ export const cyclicConvertCaseOrder = [
SupportCase.PASCAL_CASE,
SupportCase.KEBAB_CASE,
SupportCase.SPACE_CASE,
SupportCase.DOT_CASE,
SupportCase.SNAKE_UPPER_CASE,
SupportCase.KEBAB_UPPER_CASE,
SupportCase.SPACE_UPPER_CASE,
SupportCase.DOT_UPPER_CASE,
SupportCase.SNAKE_PASCAL_CASE,
SupportCase.KEBAB_PASCAL_CASE,
SupportCase.SPACE_PASCAL_CASE,
SupportCase.DOT_PASCAL_CASE,
SupportCase.SNAKE_CAMEL_CASE,
SupportCase.KEBAB_CAMEL_CASE,
SupportCase.SPACE_CAMEL_CASE,
SupportCase.DOT_CAMEL_CASE,
SupportCase.LOWER_CASE,
SupportCase.UPPER_CASE,

View File

@ -30,6 +30,11 @@ export type TestCase = {
spacePascalCase: string
spaceUpperCase: string
dotCase: string
dotCamelCase: string
dotPascalCase: string
dotUpperCase: string
lowerCase?: string
upperCase?: string
}