32 lines
672 B
Python
32 lines
672 B
Python
from . import biff12
|
|
from .reader import BIFF12Reader
|
|
|
|
class StringTable(object):
|
|
def __init__(self, fp):
|
|
super(StringTable, self).__init__()
|
|
self._reader = BIFF12Reader(fp=fp)
|
|
self._strings = []
|
|
self._parse()
|
|
|
|
def __enter__(self):
|
|
return self
|
|
|
|
def __exit__(self, type, value, traceback):
|
|
self.close()
|
|
|
|
def __getitem__(self, key):
|
|
return self._strings[key]
|
|
|
|
def _parse(self):
|
|
for item in self._reader:
|
|
if item[0] == biff12.SI:
|
|
self._strings.append(item[1].t)
|
|
elif item[0] == biff12.SST_END:
|
|
break
|
|
|
|
def get_string(self, idx):
|
|
return self._strings[idx]
|
|
|
|
def close(self):
|
|
self._reader.close()
|