From 5599164fefd11f7cd022dc8c06db2c9af7b5afca Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 1 Nov 2007 19:46:28 +0000 Subject: [PATCH] Handle long strings --- src/libprs500/ebooks/lrf/html/convert_from.py | 7 +++++++ src/libprs500/ebooks/lrf/pylrs/pylrf.py | 15 +++++++++------ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/libprs500/ebooks/lrf/html/convert_from.py b/src/libprs500/ebooks/lrf/html/convert_from.py index abd1fa5d8a..6b94064da5 100644 --- a/src/libprs500/ebooks/lrf/html/convert_from.py +++ b/src/libprs500/ebooks/lrf/html/convert_from.py @@ -717,7 +717,14 @@ class HTMLConverter(object): @param css: A dict ''' src = tag.string if hasattr(tag, 'string') else tag + if len(src) > 32767: + pos = 0 + while pos < len(src): + self.add_text(src[pos:pos+32767], css, pseudo_css, force_span_use) + pos += 32767 + return src = src.replace('\r\n', '\n').replace('\r', '\n') + if pseudo_css.has_key('first-letter') and len(src) > 1: src = src.lstrip() f = src[0] diff --git a/src/libprs500/ebooks/lrf/pylrs/pylrf.py b/src/libprs500/ebooks/lrf/pylrs/pylrf.py index d4b97df603..b9587a5ac7 100644 --- a/src/libprs500/ebooks/lrf/pylrs/pylrf.py +++ b/src/libprs500/ebooks/lrf/pylrs/pylrf.py @@ -69,10 +69,15 @@ PYLRF_VERSION = "1.0" # anyway. # +class LrfError(Exception): + pass + def writeByte(f, byte): f.write(struct.pack(" 65535: + raise LrfError('Cannot encode a number greater than 65535 in a word.') f.write(struct.pack(" 65535: + raise LrfError('Cannot write strings longer than 65535 characters.') + writeWord(f, length) writeString(f, string) def writeRaw(f, string, encoding): @@ -327,11 +335,6 @@ TAG_INFO = dict( -class LrfError(Exception): - pass - - - class ObjectTableEntry(object): def __init__(self, objId, offset, size): self.objId = objId