ztfy/utils/tal/html.py
changeset 30 3c237f16b603
child 41 da1558b96f0a
equal deleted inserted replaced
29:035058514c2d 30:3c237f16b603
       
     1 ### -*- coding: utf-8 -*- ####################################################
       
     2 ##############################################################################
       
     3 #
       
     4 # Copyright (c) 2008-2010 Thierry Florac <tflorac AT ulthar.net>
       
     5 # All Rights Reserved.
       
     6 #
       
     7 # This software is subject to the provisions of the Zope Public License,
       
     8 # Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
       
     9 # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
       
    10 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
       
    11 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
       
    12 # FOR A PARTICULAR PURPOSE.
       
    13 #
       
    14 ##############################################################################
       
    15 
       
    16 __docformat__ = "restructuredtext"
       
    17 
       
    18 # import standard packages
       
    19 
       
    20 # import Zope3 interfaces
       
    21 from zope.tales.interfaces import ITALESFunctionNamespace
       
    22 
       
    23 # import local interfaces
       
    24 from interfaces import IHTMLTalesAPI
       
    25 
       
    26 # import Zope3 packages
       
    27 from zope.app import zapi
       
    28 from zope.app.renderer.plaintext import PlainTextToHTMLRenderer
       
    29 from zope.app.renderer.rest import ReStructuredTextToHTMLRenderer
       
    30 from zope.app.renderer.stx import StructuredTextToHTMLRenderer
       
    31 from zope.component import createObject
       
    32 from zope.interface import implements
       
    33 
       
    34 # import local packages
       
    35 from ztfy.utils.html import htmlToText
       
    36 
       
    37 
       
    38 class HTMLTalesAdapter(object):
       
    39 
       
    40     implements(IHTMLTalesAPI, ITALESFunctionNamespace)
       
    41 
       
    42     def __init__(self, context):
       
    43         self.context = context
       
    44 
       
    45     def setEngine(self, engine):
       
    46         self.request = engine.vars['request']
       
    47 
       
    48     def totext(self):
       
    49         if not self.context:
       
    50             return u''
       
    51         return htmlToText(self.context)
       
    52 
       
    53     def text(self):
       
    54         if not self.context:
       
    55             return u''
       
    56         formatter = createObject('zope.source.plaintext', self.context)
       
    57         renderer = PlainTextToHTMLRenderer(formatter, self.request)
       
    58         return renderer.render()
       
    59 
       
    60     def stx(self):
       
    61         if not self.context:
       
    62             return u''
       
    63         formatter = createObject('zope.source.stx', self.context)
       
    64         renderer = StructuredTextToHTMLRenderer(formatter, self.request)
       
    65         return renderer.render()
       
    66 
       
    67     def rest(self):
       
    68         if not self.context:
       
    69             return u''
       
    70         formatter = createObject('zope.source.rest', self.context)
       
    71         renderer = ReStructuredTextToHTMLRenderer(formatter, self.request)
       
    72         return renderer.render()