X-Git-Url: http://nsz.repo.hu/git/?p=c-standard;a=blobdiff_plain;f=ann2html.sh;h=8999198a11a788d8324dbb5364a398b8e3eb4713;hp=6b27ecd78ae25394562affce87721e90685ae261;hb=c8552f228e75429c8c11edb869899f05b70ea1e5;hpb=7580b254a0869cd01093b0b60f1ee65d573c4999 diff --git a/ann2html.sh b/ann2html.sh index 6b27ecd..8999198 100755 --- a/ann2html.sh +++ b/ann2html.sh @@ -14,6 +14,12 @@ BEGIN { gsub(/>/, "\\>") } +!title && /^[^@]/ { + title = $0 + gsub(/ +/, " ", title) + gsub(/Committee Draft --/, "", title) +} + /^@sect Contents/ { ss[sid] = ss[sid] "\n" seencontents = 1 @@ -73,13 +79,16 @@ seencontents && !seenfore && /^[^@]/ { sid++ getline ss[sid] = ss[sid] "

" $0 "

\n" - title = $0 if (!seencontents) { ss[sid] = ss[sid] "
\n"
 	}
 	next
 }
 
+/^@sect 3\./ {
+	markdef = 1
+}
+
 /^@sect/ {
 	sid++
 	slevel = split($2,a,/\./)+1
@@ -88,7 +97,7 @@ seencontents && !seenfore && /^[^@]/ {
 	sect = $2
 	getline
 	# todo hX, back to top
-	ss[sid] = sprintf("%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
@@ -143,17 +152,16 @@ seencontents && !seenfore && /^[^@]/ {
 	nn = 0
 	p = $2
 	getline
-	i = $2
-	ss[sid] = ss[sid] "\n"
+	ss[sid] = ss[sid] "\n"
 	next
 }
 
 /^@para/ {
-	ss[sid] = ss[sid] "

\n" + ss[sid] = ss[sid] "

\n" next } -/^ *(Syntax|Semantics|Description|Constraints|Synopsis|Returns)$/ { +/^ ?(Syntax|Semantics|Description|Constraints|Synopsis|Returns|Recommended practice|Implementation limits|Environmental limits)$/ { ss[sid] = ss[sid] "

" $0 "
\n" next } @@ -203,7 +211,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) @@ -214,6 +234,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) @@ -225,7 +249,7 @@ seencontents && !seenfore && /^[^@]/ { END { ss[sid] = ss[sid] "

" - print "C" + print "" title "" for (i = 1; i <= sid; i++) { print ss[i]