Операции регулярного выражения над функциями Javascript - PullRequest
0 голосов
/ 26 февраля 2011

Я пытаюсь найти имена функций в Javascript и вставить следующий код

var functionName = arguments.callee.toString().substr('function '.length);
functionName = functionName .substr(0,functionName .indexOf('('));
console.log(functionName);

Это запишет имя функции в консоль при ее вызове. Мне не очень повезло с этим. Я пробовал варианты этого с sed.exe:

sed "{/function/ s/$/\var ownName = arguments.callee.toString().substr('function '.length);ownName = ownName.substr(0,ownName.indexOf('('));console.log(ownName);/}" *.js

Это просто в формате sed "/elephant/ s/$/\&castle" *.js

Кто-нибудь знает, как я могу отправить то, что я добавляю, на следующую строку, а не на ту же строку, что и функция? Кроме того, как я могу реализовать следующее (но в sed.exe), чтобы избежать анонимных функций и функций eval ??

grep -Eho "^s*function w+" *.js | sort

Спасибо за помощь.

1 Ответ

0 голосов
/ 26 февраля 2011

Добавление \n в строку замены работает для GNU sed. Я изменил регулярное выражение для grep на ^[[:blank:]]*function \w\+ для sed и изменил условие вашего оператора s на него, и оно сработало правильно Вот вся команда в синтаксисе bash:

sed "/^[[:blank:]]*function \\w\\+/ s/\$/\\nvar ownName = arguments.callee.toString().substr('function '.length);\\nownName = ownName.substr(0,ownName.indexOf('('));\\nconsole.log(ownName);\\n/" *.js
...