diff options
author | Miklos Vajna <vmiklos@collabora.co.uk> | 2015-12-04 10:33:27 +0100 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2015-12-04 10:33:27 +0100 |
commit | f787f514ed327b56e979dad473d1f0e9ad3d1c77 (patch) | |
tree | dcef9b068bc60a7ec36ab1e554bee8b439a9ec3d | |
parent | 9a699098799f5b13ac5c9e8e221d4c703bfbb693 (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.py | 11 | ||||
-rw-r--r-- | msodumper/docstream.py | 3 |
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() |