main.awk
This commit is contained in:
parent
0ef18c113e
commit
30aead95e0
3 changed files with 3 additions and 2 deletions
94
sh/doc.awk
94
sh/doc.awk
|
@ -1,94 +0,0 @@
|
|||
function append(line) {
|
||||
if (doc) {
|
||||
doc = doc "\n"
|
||||
}
|
||||
doc = doc line
|
||||
}
|
||||
|
||||
function output(name) {
|
||||
print name
|
||||
print doc
|
||||
exit
|
||||
}
|
||||
|
||||
function reset() {
|
||||
doc = ""
|
||||
}
|
||||
|
||||
BEGIN {
|
||||
RE_ANY = "(.*)"
|
||||
RE_CONST = "([_A-Z][_0-9A-Z]*)"
|
||||
RE_SET = "=.*"
|
||||
RE_SPACE = "[[:space:]]"
|
||||
RE_SPACES = RE_SPACE "*"
|
||||
RE_VAR = "([_a-z][_0-9a-z]*)"
|
||||
|
||||
RE_BEGIN = "^"
|
||||
RE_END = RE_SPACES "$"
|
||||
RE_FUNC = RE_SPACES "\\(" RE_SPACES "\\)" RE_SPACES "{"
|
||||
|
||||
RE_ALIAS = RE_BEGIN "#\\(" RE_SPACES RE_VAR RE_END
|
||||
RE_CONSTANT = RE_BEGIN RE_CONST RE_SET RE_END
|
||||
RE_DOC = RE_BEGIN "#" RE_SPACE RE_ANY RE_END
|
||||
RE_FUNCTION = RE_BEGIN RE_VAR RE_FUNC RE_END
|
||||
RE_MODULE = RE_BEGIN "#." RE_SPACES RE_ANY RE_END
|
||||
RE_SHEBANG = RE_BEGIN "#!" RE_SPACES RE_ANY RE_END
|
||||
RE_VARIABLE = RE_BEGIN RE_VAR RE_SET RE_END
|
||||
|
||||
alias = 0
|
||||
reset()
|
||||
module = 0
|
||||
}
|
||||
|
||||
{
|
||||
# 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()
|
||||
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 {
|
||||
if (module) {
|
||||
printf "module: "
|
||||
output(target)
|
||||
} else {
|
||||
reset()
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue