X-Git-Url: http://nsz.repo.hu/git/?p=c-standard;a=blobdiff_plain;f=ann2html.sh;h=a4c127c5fddf3f0baa128a81387c1fd225ec589e;hp=7b3bcac9024068f673f8caabec38e907e4284aaf;hb=6fa09ff7f9eb20582513c80f0fa883b056bde241;hpb=dd0127cddb03b6a5ed3079cb1f0dd57bd098c579 diff --git a/ann2html.sh b/ann2html.sh index 7b3bcac..a4c127c 100755 --- a/ann2html.sh +++ b/ann2html.sh @@ -14,13 +14,57 @@ BEGIN { gsub(/>/, "\\>") } +!title && /^[^@]/ { + title = $0 + gsub(/ +/, " ", title) + gsub(/Committee Draft --/, "", title) +} + /^@sect Contents/ { ss[sid] = ss[sid] "\n" seencontents = 1 + level = 0 +} + +seencontents && !seenfore && /^[^@]/ { + id = $1 + if (id ~ /Annex/) + id = $2 + sub(/\.$/, "", id) + + s = $0 + if (!sub(/ +\. .*/, "", s)) { + getline + sub(/^ */, " ") + s = s $0 + sub(/ +\. .*/, "", s) + } + + if (match(s, /<[a-zA-Z0-9_]*\.h>/)) { + h = substr($0,RSTART,RLENGTH) + if (!(h in header)) + header[h] = id + } + + s = "" s "\n" + + s = "
\n" } next } +/^@sect 3\./ { + markdef = 1 +} + /^@sect/ { sid++ slevel = split($2,a,/\./)+1 @@ -50,8 +97,8 @@ BEGIN { sect = $2 getline # todo hX, back to top - ss[sid] = sprintf("\n" if (nn) note[nn] = note[nn] "\n" pre else @@ -105,18 +152,17 @@ BEGIN { nn = 0 p = $2 getline - i = $2 - ss[sid] = ss[sid] "\n" + ss[sid] = ss[sid] "\n" next } /^@para/ { - ss[sid] = ss[sid] "%s \n", sect, sect, slevel, $0, slevel) - if ($0 ~ /^(Index|Contents)/) + ss[sid] = sprintf("%s \n", slevel, sect, sect, $0, slevel) + if ($0 == "Index") ss[sid] = ss[sid] "\n" next } @@ -86,7 +133,7 @@ BEGIN { /^@end pre/ { if (!pre) next - pre = pre "\n" + pre = pre "\n
\n" + ss[sid] = ss[sid] "
\n" next } -/^ *(Syntax|Semantics|Description|Constraints|Synopsis|Returns)$/ { - ss[sid] = ss[sid] "
" $0 "\n" next } @@ -158,14 +204,26 @@ BEGIN { p = p substr(s,1,RSTART-1) m = substr(s,RSTART,RLENGTH) if (m in header) - p = p "" m "" + p = p "" m "" else p = p m s = substr(s,RSTART+RLENGTH) } 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) @@ -175,11 +233,11 @@ BEGIN { s = substr(s,RSTART+RLENGTH) } s = p s -# if (s ~ /^ *[1-9][0-9]*\) /) { -# sub(/\)/,"",s) -# sub(/[0-9]+/,"&)",s) -# } - + sub(/^ *Forward references/, "
&", s)
+ if (markdef) {
+ s = "" s "
"
+ markdef = 0
+ }
if (pre)
pre = pre "\n" s
else if (nn)
@@ -191,16 +249,15 @@ BEGIN {
END {
ss[sid] = ss[sid] ""
- print "
Footnotes\n" for (j = 1; j <= n; j++) { - s = s "
" a[j] ")" note[a[j]+0] "\n" + s = s "
" a[j] ")" note[a[j]+0] "\n" } print s }