feat: change evaluation now adds case transformation for capture groups
This commit is contained in:
@@ -7,6 +7,7 @@ import { colorize } from "../cli/style.ts";
|
||||
import { cliAlert, cliLog, cliPrompt } from "../cli/prompts.ts";
|
||||
import { multiSelectMenuInteractive } from "../cli/selectMenu.ts";
|
||||
import type { callback, ITool } from "../types.ts";
|
||||
import { toCase } from "util/caseManagement.ts";
|
||||
|
||||
async function renameFields(
|
||||
path: string,
|
||||
@@ -69,13 +70,42 @@ function applyRename(
|
||||
}
|
||||
}
|
||||
|
||||
/***
|
||||
* Evaluates the change string with the match array
|
||||
*
|
||||
* @description The change string can include the following variables:
|
||||
*
|
||||
* - $<int> - capture groups, indexed from 1
|
||||
* - $<int>i - capture groups, indexed from 1, transforming an integer to an index
|
||||
* - $<int>s - capture groups, indexed from 1, transforming a string to snake case
|
||||
* - $<int>c - capture groups, indexed from 1, transforming a string to camel case
|
||||
* - $<int>l - capture groups, indexed from 1, transforming a string to lower case
|
||||
* - $<int>u - capture groups, indexed from 1, transforming a string to upper case
|
||||
* - $<int>t - capture groups, indexed from 1, transforming a string to title case
|
||||
*/
|
||||
function evaluateChange(change: string, match: RegExpExecArray) {
|
||||
return change.replace(
|
||||
/\$(\d+)(i?)/g,
|
||||
(_, i, indexed) =>
|
||||
indexed
|
||||
? (parseInt(match[i]) ? (parseInt(match[i]) - 1).toString() : match[i])
|
||||
: match[i],
|
||||
/\$(\d+)([icslut]?)/g,
|
||||
(_, i, indexed) => {
|
||||
switch (indexed) {
|
||||
case "i":
|
||||
return (parseInt(match[i])
|
||||
? (parseInt(match[i]) - 1).toString()
|
||||
: match[i]);
|
||||
case "s":
|
||||
return toCase(match[i], "snake");
|
||||
case "c":
|
||||
return toCase(match[i], "camel");
|
||||
case "t":
|
||||
return toCase(match[i], "title");
|
||||
case "l":
|
||||
return match[i].toLowerCase();
|
||||
case "u":
|
||||
return match[i].toUpperCase();
|
||||
default:
|
||||
return match[i];
|
||||
}
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user