Делать расчеты на регулярное выражение захвата группы в залп
Мне нужно написать скрипт для реструктуризации некоторого кода в новый синтаксис, а также умножения \ деления некоторых существующих значений.
TLDR:
Например я хочу включить:
oldFunction(3, "text");
oldSize = 3;
в
newfunction("text", 3);
newSize = 6; //notice that this is oldSize*2
Мне удалось заменить и переупорядочить часть с помощью gulp-replace и regex, но я не знаю, как умножить числа в группах захвата regex.
ПОЛНЫЙ:
Более подробный пример:
font size = 34px;
text position = {5, 42};
Я использую регулярное выражение и gulp-replace, чтобы реструктурировать его в новый синтаксис:
.pipe($.replace(/font size = (.+)px;\ntext position = {(.+), (.+)}/g, 'createText($2, $3, $1);'))
И я получаю:
createText(5, 42, 34);
Все старые добрые номера теперь в правильном порядке!
Теперь проблема: могу ли я как-то выполнить основные математические манипуляции (умножение, деление) со старыми числами перед заменой?
Также. Если для такой задачи найдется более практичный инструмент - я буду рад его использовать.
1 ответ
Вы можете использовать обычный метод анонимного обратного вызова внутри.replace
чтобы иметь возможность манипулировать групповыми значениями.
.pipe($.replace(/font size = (.+)px;\ntext position = {(.+), (.+)}/g, function($0,$1,$2,$3) {
return 'createText(' + $2 + ', ' + $3 + ', ' + $1*2 + ');';
}))
Последнее значение будет умножено на 2.
Вы должны рассмотреть возможность использования шаблона сопоставления цифр ([0-9]+
) вместо подстановочного знака .+
(где .
соответствует любому символу, кроме символа разрыва строки) для такого кода для безопасной работы.