/opensource.apple.com/source/libarchive/libarchive-23.1/libarchive/doc/mdoc2wiki.awk
AWK | 473 lines | 455 code | 15 blank | 3 comment | 0 complexity | d1107e320cb31a043380a07721ac90e3 MD5 | raw file
Possible License(s): GPL-2.0, AGPL-1.0, AGPL-3.0, CC-BY-SA-3.0, MPL-2.0-no-copyleft-exception, MPL-2.0, JSON, 0BSD, LGPL-2.1, Apache-2.0, BSD-3-Clause, ISC, LGPL-2.0, WTFPL, MIT
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
- <head>
- <title>mdoc2wiki.awk</title>
- <style type="text/css">
- .enscript-comment { font-style: italic; color: rgb(178,34,34); }
- .enscript-function-name { font-weight: bold; color: rgb(0,0,255); }
- .enscript-variable-name { font-weight: bold; color: rgb(184,134,11); }
- .enscript-keyword { font-weight: bold; color: rgb(160,32,240); }
- .enscript-reference { font-weight: bold; color: rgb(95,158,160); }
- .enscript-string { font-weight: bold; color: rgb(188,143,143); }
- .enscript-builtin { font-weight: bold; color: rgb(218,112,214); }
- .enscript-type { font-weight: bold; color: rgb(34,139,34); }
- .enscript-highlight { text-decoration: underline; color: 0; }
- </style>
- </head>
- <body id="top">
- <h1 style="margin:8px;" id="f1">mdoc2wiki.awk <span style="font-weight: normal; font-size: 0.5em;">[<a href="?txt">plain text</a>]</span></h1>
- <hr/>
- <div></div>
- <pre>
- <span class="enscript-reference">#!/usr/bin/awk
- </span><span class="enscript-comment">#
- </span><span class="enscript-comment"># Copyright (c) 2003 Peter Stuge <<a href="mailto:stuge-mdoc2man@cdy.org">stuge-mdoc2man@cdy.org</a>>
- </span><span class="enscript-comment">#
- </span><span class="enscript-comment"># Permission to use, copy, modify, and distribute this software for any
- </span><span class="enscript-comment"># purpose with or without fee is hereby granted, provided that the above
- </span><span class="enscript-comment"># copyright notice and this permission notice appear in all copies.
- </span><span class="enscript-comment">#
- </span><span class="enscript-comment"># THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- </span><span class="enscript-comment"># WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- </span><span class="enscript-comment"># MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- </span><span class="enscript-comment"># ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- </span><span class="enscript-comment"># WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- </span><span class="enscript-comment"># ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- </span><span class="enscript-comment"># OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- </span>
- <span class="enscript-comment"># Dramatically overhauled by Tim Kientzle. This version almost
- </span><span class="enscript-comment"># handles library-style pages with Fn, Ft, etc commands. Still
- </span><span class="enscript-comment"># a lot of problems...
- </span>
- <span class="enscript-keyword">BEGIN</span> {
- displaylines = 0
- listdepth = 0
- trailer = <span class="enscript-string">""</span>
- out = <span class="enscript-string">""</span>
- sep = <span class="enscript-string">""</span>
- nextsep = <span class="enscript-string">" "</span>
- spaces = <span class="enscript-string">" "</span>
- }
- <span class="enscript-comment"># Add a word with appropriate preceding whitespace
- </span><span class="enscript-comment"># Maintain a short queue of the expected upcoming word separators.
- </span><span class="enscript-keyword">function</span> add(str) {
- out=out sep str
- sep = nextsep
- nextsep = <span class="enscript-string">" "</span>
- }
- <span class="enscript-comment"># Add a word with no following whitespace
- </span><span class="enscript-comment"># Use for opening punctuation such as '('
- </span><span class="enscript-keyword">function</span> addopen(str) {
- add(str)
- sep = <span class="enscript-string">""</span>
- }
- <span class="enscript-comment"># Add a word with no preceding whitespace
- </span><span class="enscript-comment"># Use for closing punctuation such as ')' or '.'
- </span><span class="enscript-keyword">function</span> addclose(str) {
- sep = <span class="enscript-string">""</span>
- add(str)
- }
- <span class="enscript-comment"># Add a word with no space before or after
- </span><span class="enscript-comment"># Use for separating punctuation such as '='
- </span><span class="enscript-keyword">function</span> addpunct(str) {
- sep = <span class="enscript-string">""</span>
- add(str)
- sep = <span class="enscript-string">""</span>
- }
- <span class="enscript-comment"># Emit the current line so far
- </span><span class="enscript-keyword">function</span> endline() {
- addclose(trailer)
- trailer = <span class="enscript-string">""</span>
- <span class="enscript-keyword">if</span>(<span class="enscript-keyword">length</span>(out) > 0) {
- <span class="enscript-keyword">print</span> out
- out=<span class="enscript-string">""</span>
- }
- <span class="enscript-keyword">if</span>(displaylines > 0) {
- displaylines = displaylines - 1
- <span class="enscript-keyword">if</span> (displaylines == 0)
- dispend()
- }
- <span class="enscript-comment"># First word on next line has no preceding whitespace
- </span> sep = <span class="enscript-string">""</span>
- }
- <span class="enscript-keyword">function</span> linecmd(cmd) {
- endline()
- add(cmd)
- endline()
- }
- <span class="enscript-keyword">function</span> breakline() {
- linecmd(<span class="enscript-string">"<br>"</span>)
- }
- <span class="enscript-comment"># Start an indented display
- </span><span class="enscript-keyword">function</span> dispstart() {
- linecmd(<span class="enscript-string">"{{{"</span>)
- }
- <span class="enscript-comment"># End an indented display
- </span><span class="enscript-keyword">function</span> dispend() {
- linecmd(<span class="enscript-string">"}}}"</span>)
- }
- <span class="enscript-comment"># Collect rest of input line
- </span><span class="enscript-keyword">function</span> wtail() {
- retval=<span class="enscript-string">""</span>
- <span class="enscript-keyword">while</span>(w<nwords) {
- <span class="enscript-keyword">if</span>(<span class="enscript-keyword">length</span>(retval))
- retval=retval <span class="enscript-string">" "</span>
- retval=retval words[++w]
- }
- <span class="enscript-keyword">return</span> retval
- }
- <span class="enscript-keyword">function</span> splitwords(l, dest, n, o, w) {
- n = 1
- <span class="enscript-keyword">delete</span> dest
- <span class="enscript-keyword">while</span> (<span class="enscript-keyword">length</span>(l) > 0) {
- <span class="enscript-keyword">sub</span>(<span class="enscript-string">"^[ \t]*"</span>, <span class="enscript-string">""</span>, l)
- <span class="enscript-keyword">if</span> (<span class="enscript-keyword">match</span>(l, <span class="enscript-string">"^\""</span>)) {
- l = <span class="enscript-keyword">substr</span>(l, 2)
- o = <span class="enscript-keyword">index</span>(l, <span class="enscript-string">"\""</span>)
- <span class="enscript-keyword">if</span> (o > 0) {
- w = <span class="enscript-keyword">substr</span>(l, 1, o-1)
- l = <span class="enscript-keyword">substr</span>(l, o+1)
- dest[n++] = w
- } <span class="enscript-keyword">else</span> {
- dest[n++] = l
- l = <span class="enscript-string">""</span>
- }
- } <span class="enscript-keyword">else</span> {
- o = <span class="enscript-keyword">match</span>(l, <span class="enscript-string">"[ \t]"</span>)
- <span class="enscript-keyword">if</span> (o > 0) {
- w = <span class="enscript-keyword">substr</span>(l, 1, o-1)
- l = <span class="enscript-keyword">substr</span>(l, o+1)
- dest[n++] = w
- } <span class="enscript-keyword">else</span> {
- dest[n++] = l
- l = <span class="enscript-string">""</span>
- }
- }
- }
- <span class="enscript-keyword">return</span> n-1
- }
- ! /^\./ {
- out = $0
- endline()
- <span class="enscript-keyword">next</span>
- }
- /^\.\\<span class="enscript-string">"/ { next }
- {
- sub("</span>^\\.<span class="enscript-string">","</span><span class="enscript-string">")
- nwords=splitwords($0, words)
- # TODO: Instead of iterating 'w' over the array, have a separate
- # function that returns 'next word' and use that. This will allow
- # proper handling of double-quoted arguments as well.
- for(w=1;w<=nwords;w++) {
- if(match(words[w],"</span>^Li$<span class="enscript-string">")) { # Literal; rest of line is unformatted
- dispstart()
- displaylines = 1
- } else if(match(words[w],"</span>^Dl$<span class="enscript-string">")) { # Display literal
- dispstart()
- displaylines = 1
- } else if(match(words[w],"</span>^Bd$<span class="enscript-string">")) { # Begin display
- if(match(words[w+1],"</span>-literal<span class="enscript-string">")) {
- dispstart()
- displaylines=10000
- w=nwords
- }
- } else if(match(words[w],"</span>^Ed$<span class="enscript-string">")) { # End display
- displaylines = 0
- dispend()
- } else if(match(words[w],"</span>^Ns$<span class="enscript-string">")) { # Suppress space before next word
- sep="</span><span class="enscript-string">"
- } else if(match(words[w],"</span>^No$<span class="enscript-string">")) { # Normal text
- add(words[++w])
- } else if(match(words[w],"</span>^Dq$<span class="enscript-string">")) { # Quote
- addopen("</span>\<span class="enscript-string">""</span>)
- add(words[++w])
- <span class="enscript-keyword">while</span>(w<nwords&&!<span class="enscript-keyword">match</span>(words[w+1],<span class="enscript-string">"^[\\.,]"</span>))
- add(words[++w])
- addclose(<span class="enscript-string">"\""</span>)
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^Do$"</span>)) {
- addopen(<span class="enscript-string">"\""</span>)
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^Dc$"</span>)) {
- addclose(<span class="enscript-string">"\""</span>)
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^Oo$"</span>)) {
- addopen(<span class="enscript-string">"`[`"</span>)
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^Oc$"</span>)) {
- addclose(<span class="enscript-string">"`]`"</span>)
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^Ao$"</span>)) {
- addopen(<span class="enscript-string">"`<`"</span>)
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^Ac$"</span>)) {
- addclose(<span class="enscript-string">"`>`"</span>)
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^Dd$"</span>)) {
- date=wtail()
- <span class="enscript-keyword">next</span>
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^Dt$"</span>)) {
- id=wtail()
- <span class="enscript-keyword">next</span>
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^Ox$"</span>)) {
- add(<span class="enscript-string">"OpenBSD"</span>)
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^Fx$"</span>)) {
- add(<span class="enscript-string">"FreeBSD"</span>)
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^Bx$"</span>)) {
- add(<span class="enscript-string">"BSD"</span>)
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^Nx$"</span>)) {
- add(<span class="enscript-string">"NetBSD"</span>)
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^St$"</span>)) {
- <span class="enscript-keyword">if</span> (<span class="enscript-keyword">match</span>(words[w+1], <span class="enscript-string">"^-p1003.1$"</span>)) {
- w++
- add(<span class="enscript-string">"IEEE Std 1003.1 (``POSIX.1'')"</span>)
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w+1], <span class="enscript-string">"^-p1003.1-96$"</span>)) {
- w++
- add(<span class="enscript-string">"ISO/IEC 9945-1:1996 (``POSIX.1'')"</span>)
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w+1], <span class="enscript-string">"^-p1003.1-88$"</span>)) {
- w++
- add(<span class="enscript-string">"IEEE Std 1003.1-1988 (``POSIX.1'')"</span>)
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w+1], <span class="enscript-string">"^-p1003.1-2001$"</span>)) {
- w++
- add(<span class="enscript-string">"IEEE Std 1003.1-2001 (``POSIX.1'')"</span>)
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w+1], <span class="enscript-string">"^-susv2$"</span>)) {
- w++
- add(<span class="enscript-string">"Version 2 of the Single UNIX Specification (``SUSv2'')"</span>)
- }
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^Ex$"</span>)) {
- <span class="enscript-keyword">if</span> (<span class="enscript-keyword">match</span>(words[w+1], <span class="enscript-string">"^-std$"</span>)) {
- w++
- add(<span class="enscript-string">"The *"</span> name <span class="enscript-string">"* utility exits 0 on success, and >0 if an error occurs."</span>)
- }
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^Os$"</span>)) {
- add(<span class="enscript-string">"#summary "</span> id <span class="enscript-string">" manual page"</span>)
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^Sh$"</span>)) {
- section=wtail()
- linecmd(<span class="enscript-string">"== "</span> section <span class="enscript-string">" =="</span>)
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^Xr$"</span>)) {
- add(<span class="enscript-string">"*"</span> words[++w] <span class="enscript-string">"*("</span> words[++w] <span class="enscript-string">")"</span> words[++w])
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^Nm$"</span>)) {
- <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(section,<span class="enscript-string">"SYNOPSIS"</span>))
- breakline()
- <span class="enscript-keyword">if</span>(w >= nwords)
- n=name
- <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span> (<span class="enscript-keyword">match</span>(words[w+1], <span class="enscript-string">"^[A-Z][a-z]$"</span>))
- n=name
- <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span> (<span class="enscript-keyword">match</span>(words[w+1], <span class="enscript-string">"^[.,;:]$"</span>))
- n=name
- <span class="enscript-keyword">else</span> {
- n=words[++w]
- <span class="enscript-keyword">if</span>(!<span class="enscript-keyword">length</span>(name))
- name=n
- }
- <span class="enscript-keyword">if</span>(!<span class="enscript-keyword">length</span>(n))
- n=name
- <span class="enscript-keyword">if</span> (displaylines == 0)
- add(<span class="enscript-string">"*"</span> n <span class="enscript-string">"*"</span>)
- <span class="enscript-keyword">else</span>
- add(n)
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^Nd$"</span>)) {
- add(<span class="enscript-string">"- "</span> wtail())
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^Fl$"</span>)) {
- <span class="enscript-keyword">if</span> (displaylines == 0)
- add(<span class="enscript-string">"*-"</span> words[++w] <span class="enscript-string">"*"</span>)
- <span class="enscript-keyword">else</span>
- add(<span class="enscript-string">"-"</span> words[++w])
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^Ar$"</span>)) {
- <span class="enscript-keyword">if</span>(w==nwords)
- add(<span class="enscript-string">"_file ..._"</span>)
- <span class="enscript-keyword">else</span> {
- ++w
- <span class="enscript-keyword">gsub</span>(<span class="enscript-string">"<"</span>, <span class="enscript-string">"`<`"</span>, words[w])
- add(<span class="enscript-string">"_"</span> words[w] <span class="enscript-string">"_"</span>)
- }
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^Cm$"</span>)) {
- ++w
- <span class="enscript-keyword">if</span> (displaylines == 0) {
- <span class="enscript-keyword">gsub</span>(<span class="enscript-string">"^_"</span>, <span class="enscript-string">"`_`"</span>, words[w])
- <span class="enscript-keyword">gsub</span>(<span class="enscript-string">"\\*$"</span>, <span class="enscript-string">"`*`"</span>, words[w])
- add(<span class="enscript-string">"*"</span> words[w] <span class="enscript-string">"*"</span>)
- } <span class="enscript-keyword">else</span>
- add(words[w])
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^Op$"</span>)) {
- addopen(<span class="enscript-string">"`[`"</span>)
- option=1
- trailer=<span class="enscript-string">"`]`"</span> trailer
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^Pp$"</span>)) {
- ++w
- endline()
- <span class="enscript-keyword">print</span> <span class="enscript-string">""</span>
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^An$"</span>)) {
- <span class="enscript-keyword">if</span> (<span class="enscript-keyword">match</span>(words[w+1],<span class="enscript-string">"-nosplit"</span>))
- ++w
- endline()
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^Ss$"</span>)) {
- add(<span class="enscript-string">"==="</span>)
- trailer=<span class="enscript-string">"==="</span>
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^Ft$"</span>)) {
- <span class="enscript-keyword">if</span> (<span class="enscript-keyword">match</span>(section, <span class="enscript-string">"SYNOPSIS"</span>)) {
- breakline()
- }
- l = wtail()
- <span class="enscript-keyword">gsub</span>(<span class="enscript-string">"\\*"</span>, <span class="enscript-string">"`*`"</span>, l)
- add(<span class="enscript-string">"*"</span> l <span class="enscript-string">"*"</span>)
- <span class="enscript-keyword">if</span> (<span class="enscript-keyword">match</span>(section, <span class="enscript-string">"SYNOPSIS"</span>)) {
- breakline()
- }
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^Fn$"</span>)) {
- ++w
- F = <span class="enscript-string">"*"</span> words[w] <span class="enscript-string">"*("</span>
- Fsep = <span class="enscript-string">""</span>
- <span class="enscript-keyword">while</span>(w<nwords) {
- ++w
- <span class="enscript-keyword">if</span> (<span class="enscript-keyword">match</span>(words[w], <span class="enscript-string">"^[.,:]$"</span>)) {
- --w
- <span class="enscript-keyword">break</span>
- }
- <span class="enscript-keyword">gsub</span>(<span class="enscript-string">"\\*"</span>, <span class="enscript-string">"`*`"</span>, words[w])
- F = F Fsep <span class="enscript-string">"_"</span> words[w] <span class="enscript-string">"_"</span>
- Fsep = <span class="enscript-string">", "</span>
- }
- add(F <span class="enscript-string">")"</span>)
- <span class="enscript-keyword">if</span> (<span class="enscript-keyword">match</span>(section, <span class="enscript-string">"SYNOPSIS"</span>)) {
- addclose(<span class="enscript-string">";"</span>)
- }
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^Fo$"</span>)) {
- w++
- F = <span class="enscript-string">"*"</span> words[w] <span class="enscript-string">"*("</span>
- Fsep = <span class="enscript-string">""</span>
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^Fa$"</span>)) {
- w++
- <span class="enscript-keyword">gsub</span>(<span class="enscript-string">"\\*"</span>, <span class="enscript-string">"`*`"</span>, words[w])
- F = F Fsep <span class="enscript-string">"_"</span> words[w] <span class="enscript-string">"_"</span>
- Fsep = <span class="enscript-string">", "</span>
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^Fc$"</span>)) {
- add(F <span class="enscript-string">")"</span>)
- <span class="enscript-keyword">if</span> (<span class="enscript-keyword">match</span>(section, <span class="enscript-string">"SYNOPSIS"</span>)) {
- addclose(<span class="enscript-string">";"</span>)
- }
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^Va$"</span>)) {
- w++
- add(<span class="enscript-string">"_"</span> words[w] <span class="enscript-string">"_"</span>)
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^In$"</span>)) {
- w++
- add(<span class="enscript-string">"*#include <"</span> words[w] <span class="enscript-string">">*"</span>)
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^Pa$"</span>)) {
- w++
- <span class="enscript-comment"># if(match(words[w],"^\\."))
- </span><span class="enscript-comment"># add("\\&")
- </span> <span class="enscript-keyword">if</span> (displaylines == 0)
- add(<span class="enscript-string">"_"</span> words[w] <span class="enscript-string">"_"</span>)
- <span class="enscript-keyword">else</span>
- add(words[w])
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^Dv$"</span>)) {
- linecmd()
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^Em|Ev$"</span>)) {
- add(<span class="enscript-string">".IR"</span>)
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^Pq$"</span>)) {
- addopen(<span class="enscript-string">"("</span>)
- trailer=<span class="enscript-string">")"</span> trailer
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^Aq$"</span>)) {
- addopen(<span class="enscript-string">" <"</span>)
- trailer=<span class="enscript-string">">"</span> trailer
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^Brq$"</span>)) {
- addopen(<span class="enscript-string">"{"</span>)
- trailer=<span class="enscript-string">"}"</span> trailer
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^S[xy]$"</span>)) {
- add(<span class="enscript-string">".B "</span> wtail())
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^Tn$"</span>)) {
- n=wtail()
- <span class="enscript-keyword">gsub</span>(<span class="enscript-string">"\\*$"</span>, <span class="enscript-string">"`*`"</span>, n)
- add(<span class="enscript-string">"*"</span> n <span class="enscript-string">"*"</span>)
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^Ic$"</span>)) {
- add(<span class="enscript-string">"\\fB"</span>)
- trailer=<span class="enscript-string">"\\fP"</span> trailer
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^Bl$"</span>)) {
- ++listdepth
- listnext[listdepth]=<span class="enscript-string">""</span>
- <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w+1],<span class="enscript-string">"-bullet"</span>)) {
- optlist[listdepth]=1
- addopen(<span class="enscript-string">"<ul>"</span>)
- listclose[listdepth]=<span class="enscript-string">"</ul>"</span>
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w+1],<span class="enscript-string">"-enum"</span>)) {
- optlist[listdepth]=2
- enum=0
- addopen(<span class="enscript-string">"<ol>"</span>)
- listclose[listdepth]=<span class="enscript-string">"</ol>"</span>
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w+1],<span class="enscript-string">"-tag"</span>)) {
- optlist[listdepth]=3
- addopen(<span class="enscript-string">"<dl>"</span>)
- listclose[listdepth]=<span class="enscript-string">"</dl>"</span>
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w+1],<span class="enscript-string">"-item"</span>)) {
- optlist[listdepth]=4
- addopen(<span class="enscript-string">"<ul>"</span>)
- listclose[listdepth]=<span class="enscript-string">"</ul>"</span>
- }
- w=nwords
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^El$"</span>)) {
- addclose(listnext[listdepth])
- addclose(listclose[listdepth])
- listclose[listdepth]=<span class="enscript-string">""</span>
- listdepth--
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^It$"</span>)) {
- addclose(listnext[listdepth])
- <span class="enscript-keyword">if</span>(optlist[listdepth]==1) {
- addpunct(<span class="enscript-string">"<li>"</span>)
- listnext[listdepth] = <span class="enscript-string">"</li>"</span>
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(optlist[listdepth]==2) {
- addpunct(<span class="enscript-string">"<li>"</span>)
- listnext[listdepth] = <span class="enscript-string">"</li>"</span>
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(optlist[listdepth]==3) {
- addpunct(<span class="enscript-string">"<dt>"</span>)
- listnext[listdepth] = <span class="enscript-string">"</dt>"</span>
- <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w+1],<span class="enscript-string">"^Xo$"</span>)) {
- <span class="enscript-comment"># Suppress trailer
- </span> w++
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w+1],<span class="enscript-string">"^Pa$|^Ev$"</span>)) {
- addopen(<span class="enscript-string">"*"</span>)
- w++
- add(words[++w] <span class="enscript-string">"*"</span>)
- } <span class="enscript-keyword">else</span> {
- trailer = listnext[listdepth] <span class="enscript-string">"<dd>"</span> trailer
- listnext[listdepth] = <span class="enscript-string">"</dd>"</span>
- }
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(optlist[listdepth]==4) {
- addpunct(<span class="enscript-string">"<li>"</span>)
- listnext[listdepth] = <span class="enscript-string">"</li>"</span>
- }
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^Xo$"</span>)) {
- <span class="enscript-comment"># TODO: Figure out how to handle this
- </span> } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^Xc$"</span>)) {
- <span class="enscript-comment"># TODO: Figure out how to handle this
- </span> <span class="enscript-keyword">if</span> (optlist[listdepth] == 3) {
- addclose(listnext[listdepth])
- addopen(<span class="enscript-string">"<dd>"</span>)
- listnext[listdepth] = <span class="enscript-string">"</dd>"</span>
- }
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^[=]$"</span>)) {
- addpunct(words[w])
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^[\[{(]$"</span>)) {
- addopen(words[w])
- } <span class="enscript-keyword">else</span> <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(words[w],<span class="enscript-string">"^[\\\])}.,;:]$"</span>)) {
- addclose(words[w])
- } <span class="enscript-keyword">else</span> {
- <span class="enscript-keyword">sub</span>(<span class="enscript-string">"\\\\&"</span>, <span class="enscript-string">""</span>, words[w])
- add(words[w])
- }
- }
- <span class="enscript-keyword">if</span>(<span class="enscript-keyword">match</span>(out,<span class="enscript-string">"^\\.[^a-zA-Z]"</span>))
- <span class="enscript-keyword">sub</span>(<span class="enscript-string">"^\\."</span>,<span class="enscript-string">""</span>,out)
- endline()
- }
- </pre>
- <hr />
- </body></html>