diff --git a/type-script-helper/README.md b/type-script-helper/README.md index 0fc8f7f..3b3381b 100644 --- a/type-script-helper/README.md +++ b/type-script-helper/README.md @@ -98,4 +98,9 @@ None ----------------------------------------------------------------------------------------------------------- - Moved Insert date time -- Transform to Popper Case \ No newline at end of file +- Transform to Popper Case + +## 1.4.4 +----------------------------------------------------------------------------------------------------------- + +- Transform to Param Case \ No newline at end of file diff --git a/type-script-helper/package.json b/type-script-helper/package.json index d9a5173..9ae9548 100644 --- a/type-script-helper/package.json +++ b/type-script-helper/package.json @@ -4,7 +4,7 @@ "description": "Helper for VS Code in TypeScript", "publisher": "IFX", "repository": "https://github.com/mikepharesjr/YO-VSCode/tree/master/type-script-helper", - "version": "1.4.3", + "version": "1.4.4", "engines": { "vscode": "^1.79.0" }, @@ -31,6 +31,10 @@ "command": "promiseLinesHelper.transformToPopperCase", "title": "Transform to Popper Case" }, + { + "command": "promiseLinesHelper.transformToParamCase", + "title": "Transform to Param Case" + }, { "command": "readOnlyLinesHelper.searchGoogle", "title": "Search Google" diff --git a/type-script-helper/src/extension.ts b/type-script-helper/src/extension.ts index 2df94cd..6bd1836 100644 --- a/type-script-helper/src/extension.ts +++ b/type-script-helper/src/extension.ts @@ -28,6 +28,7 @@ export function activate(context: vscode.ExtensionContext) { vscode.commands.registerCommand('promiseLinesHelper.codeGeneratorQuickPick', promiseLinesHelper.codeGeneratorQuickPick), vscode.commands.registerCommand('promiseLinesHelper.insertDateTime', promiseLinesHelper.insertDateTime), vscode.commands.registerCommand('promiseLinesHelper.transformToPopperCase', promiseLinesHelper.transformToPopperCase), + vscode.commands.registerCommand('promiseLinesHelper.transformToParamCase', promiseLinesHelper.transformToParamCase), vscode.commands.registerCommand('readOnlyLinesHelper.searchGoogle', readOnlyLinesHelper.searchGoogle), vscode.commands.registerCommand('replaceLinesHelper.addCSharpComment', replaceLinesHelper.addCSharpComment), vscode.commands.registerCommand('replaceLinesHelper.addVBComment', replaceLinesHelper.addVBComment), diff --git a/type-script-helper/src/promiseLinesHelper.ts b/type-script-helper/src/promiseLinesHelper.ts index e517c7c..5726c84 100644 --- a/type-script-helper/src/promiseLinesHelper.ts +++ b/type-script-helper/src/promiseLinesHelper.ts @@ -177,6 +177,39 @@ function transformToPopperCaseLogic(): undefined { return undefined; } +function paramCase(str: string) { + return str + .replace( + /([A-Z]+(.))/g, + (_, separator, letter, offset) => (offset ? "-" + separator : separator).toLowerCase() + ) + .split(/[\s!?.,@:;|\\/"'`£$%\^&*{}[\]()<>~#+\-=_¬]+/g) + .join('-') + .replace(/(^-|-$)/g, ''); +}; + +function transformToParamCaseLogic(): undefined { + const textEditor = vscode.window.activeTextEditor; + if (!textEditor) { + return undefined; + } + const selection = textEditor.selection; + textEditor.edit(editBuilder => { + var range; + if (selection.isEmpty) { + return undefined; + } + else { + range = new vscode.Range(selection.start.line, selection.start.character, selection.end.line, selection.end.character); + const highlighted = textEditor.document.getText(range); + let paramCased = paramCase(highlighted); + editBuilder.replace(range, paramCased); + } + }); + return undefined; +} + export const codeGeneratorQuickPick = () => codeGeneratorQuickPickLogic(); export const insertDateTime = () => insertDateTimeLogic(); -export const transformToPopperCase = () => transformToPopperCaseLogic(); \ No newline at end of file +export const transformToPopperCase = () => transformToPopperCaseLogic(); +export const transformToParamCase = () => transformToParamCaseLogic(); \ No newline at end of file