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

Merge branch 'main' into release

This commit is contained in:
程序员小墨 2024-07-28 21:10:16 +08:00
commit da741a6e24
9 changed files with 387 additions and 45 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

@ -9,13 +9,13 @@ A powerful variable naming conversion extension. Supports one-key conversion & c
- ✅ 支持多窗口 (不支持子窗口状态栏) Support subwindow (subwindow status bar are not supported)
- ✅ 支持撤回 & 重做 Support undo & redo (Ctrl + Z / Ctrl + Y)
## 如何使用? How to Use?
> 🔭 Tips for Chinese users: 如果您无法看到下文图片,请[点这里](https://gitee.com/coder-xiaomo/variable-conversion-vscode-extension/blob/main/README.md)查看
> 🔭 Tips for Chinese users: 如果您无法看到下文图片,请[点击这里查看](https://gitee.com/coder-xiaomo/variable-conversion-vscode-extension/blob/main/README.md)
## 如何使用? How to Use?
### 循环转换 Cyclic conversion (Beta)
选中需要转换的内容,然后按下 `Ctrl + Alt + [``Ctrl + Alt + ]` 即可前后灵活切换变量命名方式。
选中需要转换的内容,然后按下 `Ctrl + Alt + [``Ctrl + Alt + ]` 即可前后灵活切换变量命名方式。 <br>
Select what you want to convert in the editor, and then press `Ctrl + Alt + [` or `Ctrl + Alt + ]` to flexibly convert variable name flexibly.
![](image/cyclic-conversion.gif)
@ -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 |

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: '全小写',
@ -366,23 +442,26 @@ export const quickPickSupportCases = [
*/
export const cyclicConvertCaseOrder = [
SupportCase.CAMEL_CASE,
SupportCase.PASCAL_CASE,
SupportCase.SNAKE_CASE,
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
}