require TEItools.tcl
require Simple.tcl
withNode docroot descendant element "TITLE" child element "MANSECTION" {
    TEItoolsSetup [content]
}

specification translate {
    {element TITLE} {
	prefix	"\n.TH"
	suffix	{ \\\" -*- nroff -*-}
    }
    {elements "SUBSECTION SUBSUBSECTION OPTIONDESC COMMENT"} {
	before	{}
	after	{}
	prefix	{}
    }
    {elements "COMMAND MANSECTION"} {
	before	{}
	after	{}
	prefix	" "
    }
    {element PAGE} {
	prefix	{}
	suffix	"\n"
    }
    {elements "SECTIONNAME AUTHORITY"} {
	before	{}
	after	{}
	prefix	" \""
	suffix	"\""
    }
    {element NAME} {
	prefix	"\n.SH [localize manName]\n"
	startAction {
	    global NL
	    set NL 1
	}
    }
    {element SYNOPSIS} {
	prefix	"\n.SH [localize manSynopsis]\n"
    }
    {element BUGS} {
	prefix	"\n.SH [localize manBugs]\n"
    }
    {element NOTES} {
	prefix	"\n.SH [localize manNotes]\n"
    }
    {element BOLD} {
	prefix	{\\fB}
	suffix	{\\fR}
    }
    {element ITALIC} {
	prefix	{\\fB}
	suffix	{\\fR}
    }
    {element DESCRIPTION} {
	prefix	"\n.SH [localize manDescription]\n"
    }
    {element PARA in COMMENT} {
	prefix	".\" "
    }
    {element PARA in OPTIONDESC} {
	prefix	{}
	suffix	{}
    }
    {element PARA} {
	prefix	"\n.PP\n"
    }
    {element OPTIONS} {
	prefix	"\n.SS [localize manOptions]\n"
    }
    {element OPTION} {
	prefix	"\n.TP\n"
    }
    {element OPTIONNAME} {
	prefix	".I \""
	suffix	"\"\n"
	endAction { set NL 1 }
    }
    {element HEAD in SUBSECTION} {
	prefix	"\n.SS "
    }
    {element HEAD in SUBSUBSECTION} {
	prefix	"\n.IP "
    }
    {element EXAMPLE} {
	prefix		".nf\n"
	suffix		"\n.fi"
	cdataFilter	identity
    }
    {el} {
	#before	"\n"
	#after	"\n"
	prefix	[openUnknown]
	cdataFilter	textCdataFilter
	sdataFilter	textSdataFilter
    }
}

substitution textCdataFilterSubst {
    {-} {\-}
    "\n" { }
}

set NL 0

proc textCdataFilter { text } {
    global NL
    if { "$text" == "\n" } {
	set NL 1
	set ret $text
    } else {
	if { $NL == 1 } {
	    set ret [string trimleft $text]
	    if { "$ret" != "" } {
		set NL 0
	    }
	} else {
	    set ret $text
	}
    }
    return [textCdataFilterSubst $ret]
}

substitution textSdataFilter {
    {[lt   ]} {<}
    {[gt   ]} {>}
}

#Local variables:
#mode: tcl
#End:

