0

私は電子メールクライアントを書いていますが%CURSOR、kmailテンプレートのようなものを実装したいと思います。生成された電子メールメッセージが表示された後にカーソルを置く位置をマークします。どのテンプレートエンジンがこのタイプのことを実行できますか?

4

1 に答える 1

0
from mako.runtime import Context
class CursorContext(Context):
    __slots__=set(('lines', 'position'))

    def __init__(self, *args, **kwargs):
        super(CursorContext, self.__class__).__init__(self, self, *args, **kwargs)
        self.lines=['']
        self.position=None

    def write(self, v):
        ls=s(v).split('\n')
        self.lines[-1]+=ls.pop(0)
        self.lines+=ls

    def _record_position(self):
        if self.position is not None:
            raise ValueError('Position already defined')
        self.position=(len(self.lines), len(self.lines[-1]) if self.lines else 0)

    def _get_position(self):
        if self.position is None:
            self._record_position()
        return self.position

<...>

context=CursorContext(**env) # env is a dictionary with template environment variables
template.render_context(context) # template is mako.template.Template object
# Now template is in context.lines and 
# cursor position can be obtained by context._get_position()
于 2012-05-06T21:43:08.497 に答える