summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2015-12-04 10:33:27 +0100
committerMiklos Vajna <vmiklos@collabora.co.uk>2015-12-04 10:33:27 +0100
commitf787f514ed327b56e979dad473d1f0e9ad3d1c77 (patch)
treedcef9b068bc60a7ec36ab1e554bee8b439a9ec3d
parent9a699098799f5b13ac5c9e8e221d4c703bfbb693 (diff)
docstream: allow seeking back to FactoidData later
To allow code like: self.factoidData.propBagStore.factoidTypes[0].rgbUri.rgxch or self.factoidData.propBagStore.stringTable
-rw-r--r--msodumper/docrecord.py11
-rw-r--r--msodumper/docstream.py3
2 files changed, 9 insertions, 5 deletions
diff --git a/msodumper/docrecord.py b/msodumper/docrecord.py
index 319e21b..424da09 100644
--- a/msodumper/docrecord.py
+++ b/msodumper/docrecord.py
@@ -4067,7 +4067,7 @@ class PBString(DOCDirStream):
break
bytes.append(c)
encoding = "ascii"
- print '<rgxch value="%s"/>' % globals.encodeName("".join(map(lambda c: chr(c), bytes)).decode(encoding), lowOnly=True).encode('utf-8')
+ self.printAndSet("rgxch", globals.encodeName("".join(map(lambda c: chr(c), bytes)).decode(encoding), lowOnly=True).encode('utf-8'), hexdump=False)
print '</%s>' % self.name
self.parent.pos = self.pos
@@ -4084,9 +4084,12 @@ class FactoidType(DOCDirStream):
print '<factoidType>'
self.printAndSet("cbFactoid", self.readuInt32())
self.printAndSet("id", self.readuInt32())
- PBString(self, "rgbUri").dump()
- PBString(self, "rgbTag").dump()
- PBString(self, "rgbDownLoadURL").dump()
+ self.rgbUri = PBString(self, "rgbUri")
+ self.rgbUri.dump()
+ self.rgbTag = PBString(self, "rgbTag")
+ self.rgbTag.dump()
+ self.rgbDownLoadURL = PBString(self, "rgbDownLoadURL")
+ self.rgbDownLoadURL.dump()
print '</factoidType>'
self.parent.pos = self.pos
diff --git a/msodumper/docstream.py b/msodumper/docstream.py
index 13dddc9..c8d99a7 100644
--- a/msodumper/docstream.py
+++ b/msodumper/docstream.py
@@ -693,7 +693,8 @@ class WordDocumentStream(DOCDirStream):
docrecord.SttbListNames(self).dump()
def handleLcbFactoidData(self):
- docrecord.SmartTagData(self).dump()
+ self.factoidData = docrecord.SmartTagData(self)
+ self.factoidData.dump()
def handleLcbSttbfBkmk(self):
docrecord.SttbfBkmk(self).dump()