From a601c9c11e8167dc06c7c583297b4391b7391f11 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 13 Jul 2007 19:19:16 +0000 Subject: [PATCH] Fix handling of
 and re-organize for easier integration
 with web2lrf

---
 src/libprs500/ebooks/lrf/html/convert_from.py | 31 ++++++++++++-------
 1 file changed, 20 insertions(+), 11 deletions(-)

diff --git a/src/libprs500/ebooks/lrf/html/convert_from.py b/src/libprs500/ebooks/lrf/html/convert_from.py
index a6cbe07715..8cba759448 100644
--- a/src/libprs500/ebooks/lrf/html/convert_from.py
+++ b/src/libprs500/ebooks/lrf/html/convert_from.py
@@ -39,7 +39,8 @@ from libprs500.ebooks.lrf.pylrs.pylrs import Paragraph, CR, Italic, ImageStream,
                 Plot, Image, BlockSpace, RuledLine, BookSetting, Canvas, DropCaps, \
                 LrsError
 from libprs500.ebooks.lrf.pylrs.pylrs import Span as _Span
-from libprs500.ebooks.lrf import option_parser, Book, PRS500_PROFILE
+from libprs500.ebooks.lrf import Book, PRS500_PROFILE
+from libprs500.ebooks.lrf import option_parser as lrf_option_parser
 from libprs500.ebooks import ConversionError
 from libprs500.ebooks.lrf.html.table import Table 
 from libprs500 import extract, filename_to_utf8
@@ -1032,6 +1033,8 @@ class HTMLConverter(object):
             if ncss:
                 update_css(ncss)            
         elif tagname == 'pre':
+            for c in tag.findAll(True):
+                c.replaceWith(self.get_text(c))
             self.end_current_para()
             self.current_block.append_to(self.current_page)
             attrs = Span.translate_attrs(tag_css, self.profile.dpi, self.fonts, self.font_delta, self.memory)
@@ -1144,7 +1147,7 @@ class HTMLConverter(object):
                 self.current_block.append(CR())
             if tag.has_key('id'):
                 self.targets[tag['id']] = self.current_block
-        elif tagname in ['b', 'strong', 'i', 'em', 'span', 'tt', 'big']:
+        elif tagname in ['b', 'strong', 'i', 'em', 'span', 'tt', 'big', 'code']:
             self.process_children(tag, tag_css)
         elif tagname == 'font':
             if tag.has_key('face'):
@@ -1269,6 +1272,7 @@ def process_file(path, options):
         conv.writeto(oname, lrs=options.lrs)
         print 'Output written to', oname
         conv.cleanup()
+        return oname
     finally:
         os.chdir(cwd)
         if dirpath:
@@ -1337,15 +1341,11 @@ def try_opf(path, options):
         pass
                 
             
-
-def parse_options(argv=None, cli=True, parser=None):
-    """ CLI for html -> lrf conversions """
-    if not argv:
-        argv = sys.argv[1:]
+def option_parser(parser=None, usage='''Usage: %prog [options] mybook.[html|rar|zip]\n\n'''
+                    '''%prog converts mybook.html to mybook.lrf'''         
+                  ):
     if not parser:
-        parser = option_parser("""usage: %prog [options] mybook.[html|rar|zip]
-
-         %prog converts mybook.html to mybook.lrf""")
+        parser = lrf_option_parser(usage)
     link = parser.add_option_group('LINK PROCESSING OPTIONS')
     link.add_option('--link-levels', action='store', type='int', default=sys.maxint, \
                       dest='link_levels',
@@ -1379,7 +1379,16 @@ def parse_options(argv=None, cli=True, parser=None):
     prepro = parser.add_option_group('PREPROCESSING OPTIONS')
     prepro.add_option('--baen', action='store_true', default=False, dest='baen',
                       help='''Preprocess Baen HTML files to improve generated LRF.''')
-    options, args = parser.parse_args(args=argv)
+    return parser
+
+
+
+def parse_options(argv=None, cli=True, parser=None):
+    """ CLI for html -> lrf conversions """
+    parser = option_parser(parser)
+    if not argv:
+        argv = sys.argv[1:]
+        options, args = parser.parse_args(args=argv)
     if len(args) != 1:
         if cli:
             parser.print_help()