Exemplo n.º 1
0
    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