#!/usr/bin/env python
            
"""
csv2xtex.py output xtex from csv...

usage: csv2latex.py -f <xtex file> [-h]
  -h : this help 
  -f : csv file
  -s : separator
  -o : xtex output
  -d : debug

example : csv2latex.py -f test.csv -o test.xtex -s ';' 
"""

from libcommon.common import *
import getopt
import sys
from libcommon.csv import *
from string import *

class CSVXTeX(CSV):
	def __init__(self, file, xtexFilename, separator, log):
		CSV.__init__(self, file, log, separator)
		self.first_line = 1
		sys.stdout = open(xtexFilename,'w')
		
	def chargeLigne(self, ligne):

		if self.first_line:
			nb_cols = len(ligne)
			sys.stdout.write('<table cols="%d" border="1" xtex_cols="|' % nb_cols)
			i = 0
			while i < nb_cols:
				sys.stdout.write('c|')
				i = i + 1
				
			print '">'
			print '<tr><th>%s</th></tr>' % join(ligne,'</th><th>')
			self.first_line = 0
		else:
			print '<tr><td>%s</td></tr>' % join(ligne,'</td><td>')
		return

	def chargeCSV(self):
		print '<html>'
		print '<body>'
		for ligne in self.data:
			self.chargeLigne(ligne)
		print '</table>'
		print '</body>'
		print '</html>'		
		
	
# --- Main prog
def main():
	try:
		opts, args = getopt.getopt(sys.argv[1:], 'l:f:hs:d:o:')
	except getopt.error, msg:
		usage(msg)
		
	debug = PYTHONDEBUG
	logfile = '/tmp/csv2xtex.log'
	separator = '|'
	file = '-'
	xtexFilename = '-'
	
	for o, a in opts:
		if o == '-f': file=a
		if o == '-l': logfile=a
		if o == '-h': usage('')
		if o == '-o': xtexFilename = a
		if o == '-s': separator = a
		if o == '-d': debug = 1
		
	if not logfile:
		usage("erreur : fichier de log n'existe pas")
	log = LOG(logfile)
	if not file:
		usage("erreur : fichier de donnees n'existe pas")

	csv = CSVXTeX(file, xtexFilename, separator, log)
	csv.chargeCSV()
		
if __name__ == '__main__':
	main()

