X-Git-Url: http://nsz.repo.hu/git/?p=c-standard;a=blobdiff_plain;f=ann2html.sh;h=f7edb9b77959ee31df1e072694467717959c3d8a;hp=3e2e1760d4eed011d9da1b4774b7a95da46e1e9f;hb=674ddaf5bee93cbbab17e76857160b00080e3001;hpb=7df8cd2a500cd0285ce82e96357a0d7e06b3956f diff --git a/ann2html.sh b/ann2html.sh index 3e2e176..f7edb9b 100755 --- a/ann2html.sh +++ b/ann2html.sh @@ -8,12 +8,16 @@ BEGIN { ss[sid] = "
" } -{ +function esc() { gsub(/\&/, "\\&") gsub(/, "\\<") gsub(/>/, "\\>") } +{ + esc() +} + !title && /^[^@]/ { title = $0 gsub(/ +/, " ", title) @@ -35,6 +39,7 @@ seencontents && !seenfore && /^[^@]/ { s = $0 if (!sub(/ +\. .*/, "", s)) { getline + esc() sub(/^ */, " ") s = s $0 sub(/ +\. .*/, "", s) @@ -78,6 +83,7 @@ seencontents && !seenfore && /^[^@]/ { } sid++ getline + esc() ss[sid] = ss[sid] "" $0 "
\n" if (!seencontents) { ss[sid] = ss[sid] "\n" @@ -85,6 +91,10 @@ seencontents && !seenfore && /^[^@]/ { next } +/^@sect 3\./ { + markdef = 1 +} + /^@sect/ { sid++ slevel = split($2,a,/\./)+1 @@ -92,8 +102,9 @@ seencontents && !seenfore && /^[^@]/ { slevel = 5 sect = $2 getline + esc() # todo hX, back to top - ss[sid] = sprintf("\n" if (nn) note[nn] = note[nn] "\n" pre else @@ -153,12 +164,12 @@ seencontents && !seenfore && /^[^@]/ { } /^@para/ { - ss[sid] = ss[sid] "%s \n", sect, sect, slevel, $0, slevel) + ss[sid] = sprintf("%s \n", slevel, sect, sect, $0, slevel) if ($0 == "Index") ss[sid] = ss[sid] "\n" next @@ -129,7 +140,7 @@ seencontents && !seenfore && /^[^@]/ { /^@end pre/ { if (!pre) next - pre = pre "\n" + pre = pre "\n\n" + ss[sid] = ss[sid] sprintf("
%s\n", sect, $2, sect, $2, $2) next } -/^ *(Syntax|Semantics|Description|Constraints|Synopsis|Returns)$/ { - ss[sid] = ss[sid] "
" $0 "
\n" +/^ ?(Syntax|Semantics|Description|Constraints|Synopsis|Returns|Recommended practice|Implementation limits|Environmental limits)$/ { + ss[sid] = ss[sid] "" $0 "\n" next } @@ -207,7 +218,19 @@ seencontents && !seenfore && /^[^@]/ { } s = p s p = "" - while (match(s, noteid "\\)")) { + # TODO: false positives.. + while (match(s, /[a-z]opt[ )"]/)) + s = substr(s,1,RSTART) "opt" substr(s,RSTART+RLENGTH-1) + if (match(s, /[a-z]opt$/)) + s = substr(s,1,RSTART) "opt" + for (;;) { + while (match(s, noteid-1 "\\)")) { + p = p substr(s,1,RSTART-1) + p = p "" noteid-1 ")" + s = substr(s,RSTART+RLENGTH) + } + if (!match(s, noteid "\\)")) + break if (noteid==1 && s !~ /\.1\)/) break p = p substr(s,1,RSTART-1) @@ -218,6 +241,10 @@ seencontents && !seenfore && /^[^@]/ { } s = p s sub(/^ *Forward references/, "
&", s) + if (markdef) { + s = "" s "
" + markdef = 0 + } if (pre) pre = pre "\n" s else if (nn) @@ -235,12 +262,13 @@ END { print ss[i] n = split(snote[i],a) if (n > 0) { - s = "footnotes
\n" + s = "Footnotes\n" for (j = 1; j <= n; j++) { s = s "
" a[j] ")" note[a[j]+0] "\n" } print s } + print "
Contents" } print "