# HG changeset patch # User Damien Correia # Date 1531136911 -7200 # Node ID 7e4fd92a7880cf36a63fe94356f1e3c4b8e886d5 # Parent 69cd0ee4546a51daa94130d6e48a09c5c74107b3# Parent 46402f73be8947439a087475178b14df255cbd6f merge default diff -r 69cd0ee4546a -r 7e4fd92a7880 src/pyams_utils/include.py --- a/src/pyams_utils/include.py Wed Jul 04 14:24:03 2018 +0200 +++ b/src/pyams_utils/include.py Mon Jul 09 13:48:31 2018 +0200 @@ -68,5 +68,5 @@ if hasattr(config, 'load_zcml'): config.load_zcml('configure.zcml') - PageTemplateFile.expression_types['extension'] = ExtensionExpr - Z3cPageTemplateFile.expression_types['extension'] = ExtensionExpr + PageTemplateFile.expression_types['tales'] = ExtensionExpr + Z3cPageTemplateFile.expression_types['tales'] = ExtensionExpr diff -r 69cd0ee4546a -r 7e4fd92a7880 src/pyams_utils/tales.py --- a/src/pyams_utils/tales.py Wed Jul 04 14:24:03 2018 +0200 +++ b/src/pyams_utils/tales.py Mon Jul 09 13:48:31 2018 +0200 @@ -97,7 +97,7 @@ class ExtensionExpr(ContextExprMixin, StringExpr): - """extension: TALES expression + """tales: TALES expression This expression can be used to call a custom named adapter providing ITALESExtension interface. """ diff -r 69cd0ee4546a -r 7e4fd92a7880 src/pyams_utils/text.py --- a/src/pyams_utils/text.py Wed Jul 04 14:24:03 2018 +0200 +++ b/src/pyams_utils/text.py Mon Jul 09 13:48:31 2018 +0200 @@ -152,3 +152,18 @@ terms = [SimpleTerm(name, name, translate(adapt.title).label) for name, adapt in registry.getAdapters(('', request), IHTMLRenderer)] super(RenderersVocabulary, self).__init__(terms) + + +@adapter_config(name='br', context=(Interface, Interface, Interface), provides=ITALESExtension) +class BrTalesExtension(ContextRequestViewAdapter): + """extension:br(value, class) TALES expression + + This expression can be used to context a given character ('|' by default) into HTML + breaks with given CSS class. + """ + + def render(self, context=None, css_class='', character='|'): + if context is None: + context = self.context + br = '
'.format('class="{0}"'.format(css_class) if css_class else '') + return context.replace(character, br)