Clean RTF combine borders

This commit is contained in:
Sengian 2011-01-07 23:36:42 +01:00
parent be93bd120a
commit 4aa12408f2

View File

@ -16,7 +16,9 @@
# #
#########################################################################
import os, tempfile
from calibre.ebooks.rtf2xml import copy
class CombineBorders:
"""Combine borders in RTF tokens to make later processing easier"""
def __init__(self,
@ -32,19 +34,21 @@ class CombineBorders:
self.__state = 'default'
self.__bord_pos = 'default'
self.__bord_att = []
def found_bd(self, line):
#cw<bd<bor-t-r-vi
self.__state = 'border'
self.__bord_pos = line[6:16]
def __default_func(self, line):
#cw<bd<bor-t-r-vi
if self.__first_five == 'cw<bd':
self.found_bd(line)
return ''
return line
def end_border(self, line, write_obj):
joiner = "|"
border_string = joiner.join(self.__bord_att)
border_string = "|".join(self.__bord_att)
self.__bord_att = []
write_obj.write('cw<bd<%s<nu<%s\n' % (self.__bord_pos,
border_string))
@ -54,6 +58,7 @@ class CombineBorders:
self. found_bd(line)
else:
write_obj.write(line)
def add_to_border_desc(self, line):
#cw<bt<bdr-hair__<nu<true
#cw<bt<bdr-linew<nu<0.50
@ -65,26 +70,22 @@ class CombineBorders:
else:
num = ':' + num
self.__bord_att.append(border_desc + num)
def __border_func(self, line, write_obj):
if self.__first_five != 'cw<bt':
self.end_border(line, write_obj)
else:
self.add_to_border_desc(line)
def combine_borders(self):
read_obj = open(self.__file, 'r')
write_obj = open(self.__write_to, 'w')
line_to_read = 'dummy'
while line_to_read:
line_to_read = read_obj.readline()
line = line_to_read
with open(self.__file, 'r') as read_obj,
open(self.__write_to, 'w') as write_obj:
for line in read_obj:
self.__first_five = line[0:5]
if self.__state == 'border':
self.__border_func(line, write_obj)
else:
to_print = self.__default_func(line)
write_obj.write(to_print)
read_obj.close()
write_obj.close()
write_obj.write(self.__default_func(line))
copy_obj = copy.Copy(bug_handler = self.__bug_handler)
if self.__copy:
copy_obj.copy_file(self.__write_to, "combine_borders.data")