def get(self, key, attrs=None): if (key not in self.repls.keys()): self.info('Unrecognised tag: \'<{}>\' at {}. Ignoring.'.format( key, self.parser.getpos() if self.parser != None else '???')) return None file, ret = self.repls[key] if (file[-3:] == '.py'): try: return ret.handler(attrs) except Exception as e: self.info( 'Tag handler for \'<{}>\' threw exception \'{}\'.'.format( key, type(e).__name__)) return '<!-- {} //-->'.format('{} -> ERROR: {}'.format( key, type(e).__name__)) elif (ret == None): s = io.StringIO('') self.disallow.append(file) # Disallow nesting! p = TransParser(False, self, s) p.feedf(file) self.disallow.pop() ret = s.getvalue() self.repls[key] = (file, ret) return ret