src/pyams_utils/text.py
changeset 232 5dad602b4ca9
parent 228 1edcd4c94110
child 233 3ba5d4160566
equal deleted inserted replaced
231:c7be97d76da1 232:5dad602b4ca9
    17 import html
    17 import html
    18 
    18 
    19 import docutils.core
    19 import docutils.core
    20 from pyramid.interfaces import IRequest
    20 from pyramid.interfaces import IRequest
    21 from zope.interface import Interface
    21 from zope.interface import Interface
    22 from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm
    22 from zope.schema.vocabulary import SimpleTerm, SimpleVocabulary
    23 
    23 
    24 # import packages
    24 # import packages
    25 from pyams_utils.adapter import ContextRequestAdapter, ContextRequestViewAdapter, adapter_config
    25 from pyams_utils.adapter import ContextRequestAdapter, ContextRequestViewAdapter, adapter_config
    26 # import interfaces
    26 # import interfaces
    27 from pyams_utils.interfaces.tales import ITALESExtension
    27 from pyams_utils.interfaces.tales import ITALESExtension
   172     This expression can be used to context a given character ('|' by default) into HTML
   172     This expression can be used to context a given character ('|' by default) into HTML
   173     breaks with given CSS class.
   173     breaks with given CSS class.
   174     """
   174     """
   175 
   175 
   176     @staticmethod
   176     @staticmethod
   177     def render(value, css_class='', character='|'):
   177     def render(value, css_class='', character='|', start_tag=None, end_tag=None):
   178         if not value:
   178         if not value:
   179             return ''
   179             return ''
   180         br = '<br {0} />'.format('class="{0}"'.format(css_class) if css_class else '')
   180         br = '<br {0} />'.format('class="{0}"'.format(css_class) if css_class else '')
   181         return value.replace(character, br)
   181         if start_tag or end_tag:
       
   182             elements = value.split(character)
       
   183             if start_tag:
       
   184                 elements[0] = '<{0}>{1}</{0}>'.format(start_tag, elements[0])
       
   185             if end_tag:
       
   186                 elements[-1] = '<{0}>{1}</{0}>'.format(end_tag, elements[-1])
       
   187             return br.join(elements)
       
   188         else:
       
   189             return value.replace(character, br)