[Libreoffice-commits] .: src/docrecord.py src/docstream.py test/doc
Miklos Vajna
vmiklos at kemper.freedesktop.org
Wed Jan 9 09:37:35 PST 2013
src/docrecord.py | 31 ++++++++++++++-----------------
src/docstream.py | 4 ++--
test/doc/sections.doc |binary
test/doc/test.py | 7 +++++++
4 files changed, 23 insertions(+), 19 deletions(-)
New commits:
commit f922c24a1c0e7bf2f7e330503eb37f2d99f39b75
Author: Miklos Vajna <vmiklos at suse.cz>
Date: Wed Jan 9 17:54:07 2013 +0100
PlcfSed: fix dumping section text
diff --git a/src/docrecord.py b/src/docrecord.py
index 9e30066..cae0153 100644
--- a/src/docrecord.py
+++ b/src/docrecord.py
@@ -30,24 +30,21 @@ class FcCompressed(DOCDirStream):
self.printAndSet("r1", self.r1)
print '</fcCompressed>'
- def getTransformedValue(self, start, end, logical = True):
+ def getTransformedValue(self, start, end, logicalPositions = True, logicalLength = True):
+ offset = self.fc
if self.fCompressed:
offset = self.fc/2
- if logical:
- fro = offset
- to = offset+end-start
- else:
- fro = start
- to = end
+ if logicalPositions:
+ fro = offset + start
+ to = offset + end
+ else:
+ fro = start
+ to = end
+ if self.fCompressed:
return globals.encodeName(self.mainStream.bytes[fro:to])
else:
- if logical:
- offset = self.fc
- fro = offset
- to = offset + (end - start) * 2
- else:
- fro = start
- to = end
+ if logicalLength:
+ to += (to - fro)
return globals.encodeName(self.mainStream.bytes[fro:to].decode('utf-16'), lowOnly = True)
class Pcd(DOCDirStream):
@@ -301,7 +298,7 @@ class PlcfSed(DOCDirStream, PLC):
self.size = size
def dump(self):
- print '<plcSed type="PlcSed" offset="%d" size="%d bytes">' % (self.pos, self.size)
+ print '<plcfSed type="PlcfSed" offset="%d" size="%d bytes">' % (self.pos, self.size)
offset = self.mainStream.fcMin
pos = self.pos
for i in range(self.getElements()):
@@ -315,9 +312,9 @@ class PlcfSed(DOCDirStream, PLC):
aSed = Sed(self, self.getOffset(self.pos, i))
aSed.dump()
- print '<transformed value="%s"/>' % self.quoteAttr(self.mainStream.retrieveText(start, end, logical = True))
+ print '<transformed value="%s"/>' % self.quoteAttr(self.mainStream.retrieveText(offset + start, offset + end, logicalLength = True))
print '</aCP>'
- print '</plcSed>'
+ print '</plcfSed>'
class Tcg(DOCDirStream):
"""The Tcg structure specifies command-related customizations."""
diff --git a/src/docstream.py b/src/docstream.py
index a0aba5e..6ec39f5 100644
--- a/src/docstream.py
+++ b/src/docstream.py
@@ -629,9 +629,9 @@ class WordDocumentStream(DOCDirStream):
index = i
return index
- def retrieveText(self, start, end, logical = False):
+ def retrieveText(self, start, end, logicalLength = False):
plcPcd = self.clx.pcdt.plcPcd
idx = self.__findText(plcPcd, start)
- return plcPcd.aPcd[idx].fc.getTransformedValue(start, end, logical = logical)
+ return plcPcd.aPcd[idx].fc.getTransformedValue(start, end, logicalPositions = False, logicalLength = logicalLength)
# vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab:
diff --git a/test/doc/sections.doc b/test/doc/sections.doc
new file mode 100644
index 0000000..9e26fb4
Binary files /dev/null and b/test/doc/sections.doc differ
diff --git a/test/doc/test.py b/test/doc/test.py
index c2b955c..0088e41 100755
--- a/test/doc/test.py
+++ b/test/doc/test.py
@@ -146,6 +146,13 @@ class Test(unittest.TestCase):
result = self.root.findall('stream[@name="WordDocument"]/fib/fibRgFcLcbBlob/lcbPlcfFldMom/plcFld/aCP[@index="2"]/transformed')
self.assertEqual('1', result[0].attrib['value'])
+ def test_sections(self):
+ self.dump('sections')
+
+ sections = self.root.findall('stream[@name="WordDocument"]/fib/fibRgFcLcbBlob/lcbPlcfSed/plcfSed/')
+ self.assertEqual('Before section 1.\\x0D\\x0D\\x0C', sections[0].findall('transformed')[0].attrib['value'])
+ self.assertEqual("\\x0DThe next one isn't a balanced one:\\x0D\\x0D\\x0C", sections[2].findall('transformed')[0].attrib['value'])
+
if __name__ == '__main__':
unittest.main()
More information about the Libreoffice-commits
mailing list