diff --git a/src/libprs500/ebooks/lrf/html/convert_from.py b/src/libprs500/ebooks/lrf/html/convert_from.py
index 7e23c43746..fa666238bc 100644
--- a/src/libprs500/ebooks/lrf/html/convert_from.py
+++ b/src/libprs500/ebooks/lrf/html/convert_from.py
@@ -1073,6 +1073,53 @@ class HTMLConverter(object):
return True
return False
+ def process_anchor(self, tag, tag_css, tag_pseudo_css):
+ key = 'name' if tag.has_key('name') else 'id'
+ name = tag[key].replace('#', '')
+ if self.anchor_to_previous:
+ self.process_children(tag, tag_css, tag_pseudo_css)
+ for c in self.anchor_to_previous.contents:
+ if isinstance(c, (TextBlock, ImageBlock)):
+ self.targets[self.target_prefix+tag[key]] = c
+ return
+ tb = self.book.create_text_block()
+ tb.Paragraph(" ")
+ self.anchor_to_previous.append(tb)
+ self.targets[self.target_prefix+name] = tb
+ return
+ previous = self.current_block
+ self.process_children(tag, tag_css, tag_pseudo_css)
+ target = None
+
+ if self.current_block == previous:
+ self.current_block.must_append = True
+ target = self.current_block
+ else:
+ found = False
+ for item in self.current_page.contents:
+ if item == previous:
+ found = True
+ continue
+ if found:
+ target = item
+ break
+ if target and not isinstance(target, (TextBlock, ImageBlock)):
+ if isinstance(target, RuledLine):
+ target = self.book.create_text_block(textStyle=self.current_block.textStyle,
+ blockStyle=self.current_block.blockStyle)
+ target.Paragraph(' ')
+ self.current_page.append(target)
+ else:
+ target = BlockSpace()
+ self.current_page.append(target)
+ if target == None:
+ if self.current_block.has_text():
+ target = self.current_block
+ else:
+ target = BlockSpace()
+ self.current_page.append(target)
+ self.targets[self.target_prefix+name] = target
+
def parse_tag(self, tag, parent_css):
try:
tagname = tag.name.lower()
@@ -1110,60 +1157,7 @@ class HTMLConverter(object):
key = 'name' if tag.has_key('name') else 'id'
self.targets[self.target_prefix+tag[key]] = self.current_block
elif tag.has_key('name') or tag.has_key('id'):
- key = 'name' if tag.has_key('name') else 'id'
- name = tag[key].replace('#', '')
- if self.anchor_to_previous:
- self.process_children(tag, tag_css, tag_pseudo_css)
- for c in self.anchor_to_previous.contents:
- if isinstance(c, (TextBlock, ImageBlock)):
- self.targets[self.target_prefix+tag[key]] = c
- return
- tb = self.book.create_text_block()
- tb.Paragraph(" ")
- self.anchor_to_previous.append(tb)
- self.targets[self.target_prefix+name] = tb
- return
- previous = self.current_block
- self.process_children(tag, tag_css, tag_pseudo_css)
- target = None
-
- if self.current_block == previous:
- if self.current_para.has_text():
- self.current_para.append_to(self.current_block)
- self.current_para = Paragraph()
- target = self.current_block
- else: # Empty element
- self.current_page.append(self.current_block)
- self.current_block = self.book.create_text_block(
- textStyle=self.current_block.textStyle,
- blockStyle=self.current_block.blockStyle)
- target = self.book.create_text_block()
- self.current_page.append(target)
- else:
- found = False
- for item in self.current_page.contents:
- if item == previous:
- found = True
- continue
- if found:
- target = item
- break
- if target and not isinstance(target, (TextBlock, ImageBlock)):
- if isinstance(target, RuledLine):
- target = self.book.create_text_block(textStyle=self.current_block.textStyle,
- blockStyle=self.current_block.blockStyle)
- target.Paragraph(' ')
- self.current_page.append(target)
- else:
- target = BlockSpace()
- self.current_page.append(target)
- if target == None:
- if self.current_block.has_text():
- target = self.current_block
- else:
- target = BlockSpace()
- self.current_page.append(target)
- self.targets[self.target_prefix+name] = target
+ self.process_anchor(tag, tag_css, tag_pseudo_css)
elif tagname == 'img':
if tag.has_key('src') and os.access(unquote(tag['src']), os.R_OK):
path = os.path.abspath(unquote(tag['src']))