1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
|
function removeComment (arg) {
gsub(/^\/\//, "", arg);
gsub(/^ /, "", arg);
return arg;
}
function makeurl(arg) {
if (index(arg, "<http")) {
gsub(/ *[*-][^a-zA-Z0-9]/, "", arg);
url = gensub(/[^>]*<(http[^>]+)>.*/, "\\1", 1, arg);
if (url == arg) return arg;
gsub(":", "://", url); # for malformed url
gsub(/\/\/\/\//, "//", url); # to fix redundant ////
gsub(/<http..*>/, "["url"]("url")", arg);
return "* "arg;
}
return arg;
}
function makefunction (arg) {
gsub(/\/\//, "", arg);
gsub(/-*/, "", arg);
return "\n----\n\n### " arg "\n";
}
function makegroup (arg) {
gsub(/\/\//, "", arg);
gsub(/=*/, "", arg);
return "\n## " arg "\n";
}
function makeheader (libname) {
return "# "libname "\n";
}
BEGIN {
STARTF = 0; # used to start functions analysis
PRINTDOC = 0;
INGROUP = 0;
NAME = "";
VERSION = "";
}
END {
}
/^\/\/====*$/ { }
/^\/\/####*$/ { PRINTDOC = 0; } # end documentation lines
/^\/\/====*$/ { PRINTDOC = 0; } # end function documentation
/^\/\/----*$/ { PRINTDOC = 0; } # end function documentation
/^\/\/ end/ { }
# scan group names)
/^\/\/====*[^=]+/ {
print makegroup($0);
PRINTDOC = 1;
}
# scan headers (library name)
/^\/\/####*[^#]+/ {
gsub(/\/\//, "", $0);
gsub(/#*/, "", $0);
print makeheader($0);
PRINTDOC = 1;
}
# scan function names
/^\/\/----*[^-]+/ {
print makefunction($0);
PRINTDOC = 1;
}
# documentation lines
/^\/\/ / {
if (PRINTDOC) {
line = removeComment($0);
line = makeurl(line);
print line;
}
}
# preserve empty commented lines
/^\/\/$/ {
if (PRINTDOC) print "";
}
# is the following really supported (?)
/declare name[ ]*]/ {
gsub(/^[^"]*"/, "", $0);
gsub(/".*/, "", $0);
NAME = $0;
}
/declare version[ ]*]/ {
gsub(/^[^"]*"/, "", $0);
gsub(/".*/, "", $0);
VERSION = $0;
}
|