# -*- tcl -*-
# $Id: script,v 1.3 2000/07/31 08:51:11 tobotras Exp $

require Simple.tcl
require TEItools.tcl
require textutil.tcl
require locale.koi8-r.tcl
require TEItoolsHTML.tcl
TEItoolsSetup "html"

set tableIsOpen 0

specification translate {
    {element "REPOSITORY"} {
	startAction {
	    global headOpen
	    set headOpen 1
	}
	prefix	{<!doctype html public "-//IETF//DTD HTML//EN">
<!-- Generated from SGML by TEItools.
  See http://xtalk.price.ru/SGML/TEItools
-->
<html>
 <head>
	}
	endAction {
	    output [closeTable]
	}
	suffix	{
 </body>
</html>
	}
    }
    {element TITLE in REPOSITORY} {
	prefix	"<title>"
	suffix	"</title>\n"
    }
    {element "SECTION"} {
	startAction openBody
	prefix		[openSection]
	suffix		[closeSection]
    }
    {element TITLE in SECTION} {
	prefix		{}
	cdataFilter	null
	sdataFilter	null
    }
    {element "ITEM"} {
	startAction openBody
	prefix		[openItem]
	suffix		[closeItem]
    }
    {element DIRECTORY in ITEM} {
	prefix		"<td><a href='/cgi-bin/cvsweb.cgi/"
	suffix		"'>[dirHref [content]]</a></td>\n"
    }
    {element DESCRIPTION in ITEM} {
	prefix		"<td>"
	suffix		"</td>"
    }
    {element AUTHOR in ITEM} {
	prefix		"<td><a href='mailto:"
	suffix		"@jet.msk.su'>[content]</a></td>\n"
    }
    {el} {
	prefix		[openUnknown]
	sdataFilter	textSdataFilter
    }
}

proc dirHref { path } {
    set splitted [file split $path]
    set len [llength $splitted]
    if { $len < 3 } {
	return $path
    } else {
	return [eval file join [lrange $splitted [expr $len - 2] [expr $len - 1]]]
    }
}

proc openBody {} {
    global headOpen
    if { $headOpen == 1 } {
	output "</head><body>\n"
	set headOpen 0
    }
}

proc openTable {} {
    global tableIsOpen
    if { $tableIsOpen == 0 } {
	set tableIsOpen 1
	set ret "<center><p><table border='1'>\n"
	withNode child element TITLE {
	    append ret "<caption><strong><big>[content]</big></strong></caption>\n"
	}
	return $ret
    } else {
	return
    }
}

proc openSection {} {
    return [openTable]
}

proc closeSection {} {
    return [closeTable]
}

proc closeTable {} {
    global tableIsOpen
    if { $tableIsOpen == 1 } {
	set tableIsOpen 0
	return "</table></center>\n"
    } else {
	return
    }
}

proc openItem {} {
    global tableIsOpen
    set ret {}
    if { $tableIsOpen == 0 } {
	append ret [openTable]
    }
    return "${ret}\n<tr>\n"
}

proc closeItem {} {
    return "</tr>\n"
}
