import re
import string
-from parser_tools import find_token
+from parser_tools import find_token, find_re
def bool_table(item):
if item == "0":
return "true"
+align_vertical = {"0": "top", "1": "bottom", "2": "center"}
align_table = {"0": "top", "2": "left", "4": "right", "8": "center"}
use_table = {"0": "none", "1": "parbox"}
table_meta_re = re.compile(r'<LyXTabular version="?1"? rows="?(\d*)"? columns="?(\d*)"?>')
-def update_tabular(lines, opt):
+def update_tabular(file):
+ regexp = re.compile(r'^\\begin_inset\s+Tabular')
+ lines = file.body
i=0
while 1:
- i = find_token(lines, '\\begin_inset Tabular', i)
+ i = find_re(lines, regexp, i)
if i == -1:
break
j = find_token(lines, '</LyXTabular>', i) + 1
if j == 0:
- opt.warning( "Error: Bad lyx format i=%d j=%d" % (i,j))
+ file.warning( "Error: Bad lyx format i=%d j=%d" % (i,j))
break
new_table = table_update(lines[i:j])
- lines[i:j] = new_table
+ lines[i:j] = new_table
i = i + len(new_table)
res = cell_re.match(lines[i])
if res:
val = res.groups()
- lines[i] = '<cell multicolumn="%s" alignment="%s" valignment="%s" topline="%s" bottomline="%s" leftline="%s" rightline="%s" rotate="%s" usebox="%s" width="%s" special="%s">' % ( val[0], align_table[val[1]], align_table[val[2]], bool_table(val[3]), bool_table(val[4]), bool_table(val[5]), bool_table(val[6]), bool_table(val[7]), use_table[val[8]], val[9], val[10])
+ lines[i] = '<cell multicolumn="%s" alignment="%s" valignment="%s" topline="%s" bottomline="%s" leftline="%s" rightline="%s" rotate="%s" usebox="%s" width="%s" special="%s">' % ( val[0], align_table[val[1]], align_vertical[val[2]], bool_table(val[3]), bool_table(val[4]), bool_table(val[5]), bool_table(val[6]), bool_table(val[7]), use_table[val[8]], val[9], val[10])
res = row_re.match(lines[i])
if res:
if res:
val = res.groups()
col_info[i] = '<column alignment="%s" valignment="%s" leftline="%s" rightline="%s" width="%s" special="%s">' \
- % ( align_table[val[0]], align_table[val[1]], bool_table(val[2]), bool_table(val[3]), val[4],val[5])
+ % ( align_table[val[0]], align_vertical[val[1]], bool_table(val[2]), bool_table(val[3]), val[4],val[5])
return lines[:2] + col_info + lines[2:]
-def convert(file):
- update_tabular(file.body, file)
- file.format = 218
-
-
-def revert(file):
- file.error("The convertion to an older format (%s) is not implemented." % file.format)
+convert = [[218, [update_tabular]]]
+revert = []
if __name__ == "__main__":