From 1467c1158a31d8d9408b21f573bfe7cd6c2fc2bb Mon Sep 17 00:00:00 2001 From: Marc Beninca Date: Sun, 6 Jul 2025 06:41:44 +0200 Subject: [PATCH] action/alias,doc --- sh/main.awk | 100 ++++++++++++++++++++++++++++++---------------------- sh/main.sh | 14 ++++++++ sh/self.sh | 1 + 3 files changed, 72 insertions(+), 43 deletions(-) diff --git a/sh/main.awk b/sh/main.awk index 8763b76..a64d8cd 100644 --- a/sh/main.awk +++ b/sh/main.awk @@ -41,54 +41,68 @@ BEGIN { } { - # doc - if (match($0, RE_SHEBANG, m)) { - append("shebang: " m[1]) - } else if (match($0, RE_DOC, m)) { - append(m[1]) - } else if (match($0, RE_ALIAS, m)) { - append("alias: " m[1]) - if (m[1] == target) { - alias = 1 - } - # set - } else if (match($0, RE_CONSTANT, m)) { - if (m[1] == target) { - printf "constant: " - output(m[1]) + if (action == "alias") { + if (match($0, RE_ALIAS, m)) { + append(m[1]) + } else if (match($0, RE_FUNCTION, m)) { + n = split(doc, array, "\n") + for (i = 1; i<= n; i++) { + print array[i] "() { " m[1] " \"${@}\" ; }" + } + reset() } else { reset() } - } else if (match($0, RE_VARIABLE, m)) { - if (m[1] == target) { - printf "variable: " - output(m[1]) - } else { + } else if (action == "doc") { + # doc + if (match($0, RE_SHEBANG, m)) { + append("shebang: " m[1]) + } else if (match($0, RE_DOC, m)) { + append(m[1]) + } else if (match($0, RE_ALIAS, m)) { + append("alias: " m[1]) + if (m[1] == target) { + alias = 1 + } + # set + } else if (match($0, RE_CONSTANT, m)) { + if (m[1] == target) { + printf "constant: " + output(m[1]) + } else { + reset() + } + } else if (match($0, RE_VARIABLE, m)) { + if (m[1] == target) { + printf "variable: " + output(m[1]) + } else { + reset() + } + # others + } else if (match($0, RE_MODULE, m)) { reset() - } - # others - } else if (match($0, RE_MODULE, m)) { - reset() - if (m[1] == target) { - module = 1 - } - } else if (match($0, RE_FUNCTION, m)) { - if (alias) { - print "alias: " target - printf "function: " - output(m[1]) - } else if (m[1] == target) { - printf "function: " - output(target) + if (m[1] == target) { + module = 1 + } + } else if (match($0, RE_FUNCTION, m)) { + if (alias) { + print "alias: " target + printf "function: " + output(m[1]) + } else if (m[1] == target) { + printf "function: " + output(target) + } else { + reset() + } } else { - reset() - } - } else { - if (module) { - printf "module: " - output(target) - } else { - reset() + if (module) { + printf "module: " + output(target) + } else { + reset() + } } } } diff --git a/sh/main.sh b/sh/main.sh index a4cec6e..f2d7a7a 100755 --- a/sh/main.sh +++ b/sh/main.sh @@ -185,11 +185,25 @@ RWX_REGEX_TARGET_FUNCTION="\ ${RWX_REGEX_BEGIN}\\(${RWX_REGEX_FUNCTION}\\)${RWX_REGEX_OPEN}" rwx_parse_code() { + # parse aliases + local line + RWX_ALIASES="$(rwx_parse_aliases)" + while IFS= read -r line; do + eval "${line}" + done <