Как извлечь функцию из файла? [закрыто]

Ваш

function git_branch {
    git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ \1/'
}

- это своего рода хакерство для обработки текста, которое люди пишут, когда не знают таких вещей, как:

git rev-parse --abbrev-ref HEAD
2
19.04.2016, 03:53
2 ответа

Предполагая, что файл синтаксически правильный, вы можете отформатировать его с помощью отступа и значительно упростить процесс поиска и извлечения функции:

  • с отступом , вы можете сделать имя функции в первом столбце строки, за которым следует левая скобка, и
  • после этого, следующая правая скобка '} ', появившееся в первом столбце, завершит функцию.

Вот простой пример с использованием GNU отступа и awk :

#!/bin/sh
# $1 = file name
# $2 = function name
indent -st -orig "$1" | awk '
BEGIN { state = 0; last = ""; }
$0 ~ /^'$2'\(/ { print last; state = 1; }
        { if (state == 1) print; }
$0 ~ /^}/ { if (state) state = 2; }
        { last = $0; }
'
3
27.01.2020, 22:04

Если вам нужен только заголовок функции, вы можете использовать ctags :

$ ctags -x foo.c
MyFunction         1 foo.c            int MyFunction(int i) {
2
27.01.2020, 22:04

Теги

Похожие вопросы