On Mon, Jul 22, 2002 at 07:11:41PM +0000, [EMAIL PROTECTED] wrote: > CVSROOT: /usr/local/lyx/cvsroot > Module name: lyx-devel > Repository: lyx-devel/src/support/ > Changes by: [EMAIL PROTECTED] 02/07/22 19:11:41 > > Modified files: > lyx-devel/src/: ChangeLog buffer.C > lyx-devel/src/support/: ChangeLog filetools.C filetools.h > > Log message: > Use lyxconvert script for reading old files
I did not put the lyxconvert script in CVS since 1) I am not sure about the name for this script. 2) I am not sure about where to put it. I think that the lyxconvert script should be installed in /usr/bin/ (the other option is to keep it in LYXDIR/scripts). How should I do it ?
#!/usr/bin/python import sys,string def check_token(lines, token, i): if lines[i][:len(token)] == token: return 1 return 0 def find_token(lines, token, start): n = len(lines) m = len(token) i = start while i < n: line = lines[i] if line[:m] == token: return i i = i+1 return -1 def find_token2(lines, token1, token2, start): n = len(lines) m1 = len(token1) m2 = len(token2) i = start while i < n: line = lines[i] if line[:m1] == token1 or line[:m2] == token2: return i i = i+1 return -1 def find_token_backwards(lines, token, start): n = len(lines) m = len(token) i = start while i >= 0: line = lines[i] if line[:m] == token: return i i = i-1 return -1 floats = { "footnote": ["\\begin_inset Foot\n", "collapsed true\n"], "margin": ["\\begin_inset Marginal\n", "collapsed true\n"], "fig": ["\\begin_inset Float figure\n", "placement htbp\n", "wide false\n", "collapsed false\n"], "tab": ["\\begin_inset Float table\n", "placement htbp\n", "wide false\n", "collapsed false\n"], "alg": ["\\begin_inset Float algorithm\n", "placement htbp\n", "wide false\n", "collapsed false\n"], "wide-fig": ["\\begin_inset Float figure\n", "placement htbp\n", "wide true\n", "collapsed false\n"], "wide-tab": ["\\begin_inset Float table\n", "placement htbp\n", "wide true\n", "collapsed false\n"] } def remove_oldfloat(lines): i = 0 while 1: i = find_token(lines, "\\begin_float", i) if i == -1: break j = find_token(lines, "\\end_float", i+1) floattype = string.split(lines[i])[1] #print floattype start = floats[floattype]+["\n"] mid = lines[i+1:j] lines[i:j+1]= start+mid+["\\end_inset \n"] i = i+1 def remove_oldminipage(lines): i = 0 flag = 0 while 1: i = find_token(lines, "\\pextra_type 2", i) if i == -1: break hfill = 0 line = string.split(lines[i]) if line[4] == "\\pextra_hfill": line[4:6] = [] hfill = 1 if line[4] == "\\pextra_start_minipage": line[4:6] = [] width = line[5] if line[4] == "\\pextra_widthp": width = line[5]+"col%" start = ["\\begin_inset Minipage\n", "position %s\n" % line[3], "inner_position 0\n", 'height "0pt"\n', 'width "%s"\n' % width, "collapsed false\n" ] if flag: flag = 0 if hfill: start = ["\n","\hfill\n","\n"]+start else: start = ["\\layout Standard\n"] + start j = find_token_backwards(lines,"\\layout", i-1) j0 = j mid = lines[j:i] j = find_token2(lines,"\\layout", "\\end_float", i+1) mid = mid+lines[i+1:j] while 1: i = find_token2(lines,"\\layout", "\\pextra_type", j+1) if i == -1 or not check_token(lines, "\\pextra_type", i): break line = string.split(lines[i]) if line[4] == "\\pextra_hfill": line[4:6] = [] if line[4] == "\\pextra_start_minipage" and line[5] == "1": flag = 1 break j = find_token_backwards(lines,"\\layout", i-1) mid = mid+lines[j:i] j = find_token2(lines,"\\layout", "\\end_float", i+1) mid = mid+lines[i+1:j] end = ["\\end_inset \n"] lines[j0:j] = start+mid+end i = i+1 def convert_116_to_120(): remove_oldminipage(lines) remove_oldfloat(lines) def set_formatnumber(number): i = find_token(lines, "\\lyxformat", 0) lines[i] = "\\lyxformat %s\n" % number in_file = sys.argv[1] fh = open(in_file) lines = fh.readlines() fh.close() convert_116_to_120() set_formatnumber(220) if len(sys.argv) < 3: fh = sys.stdout else: out_file = sys.argv[2] fh = open(out_file, "w") for line in lines: fh.write(line) fh.close() sys.exit(0)