--- a/src/pyams_utils/text.py Fri Jan 18 10:24:20 2019 +0100
+++ b/src/pyams_utils/text.py Fri Jan 18 13:52:11 2019 +0100
@@ -20,6 +20,7 @@
from zope.interface import Interface
from zope.schema.vocabulary import SimpleTerm, SimpleVocabulary
+from pyams_utils import _
from pyams_utils.adapter import ContextRequestAdapter, ContextRequestViewAdapter, adapter_config
from pyams_utils.interfaces.tales import ITALESExtension
from pyams_utils.interfaces.text import IHTMLRenderer
@@ -90,6 +91,8 @@
This renderer only replace newlines with HTML breaks.
"""
+ label = _("Simple text")
+
def render(self, **kwargs):
return html.escape(self.context).replace('\n', '<br />\n')
@@ -112,6 +115,8 @@
This renderer is using *docutils* to convert text to HTML output.
"""
+ label = _("ReStructured text")
+
def render(self, **kwargs):
"""Render reStructuredText to HTML"""
overrides = {
@@ -135,6 +140,8 @@
This renderer is converting *Markdown* formatted text to HTML.
"""
+ label = _("Markdown text")
+
def render(self, **kwargs):
"""Render Markdown code to HTML"""
return markdown(self.context)
@@ -190,16 +197,22 @@
return str(context)
-@vocabulary_config(name='PyAMS HTML renderers')
+PYAMS_HTML_RENDERERS_VOCABULARY = 'PyAMS HTML renderers'
+
+
+@vocabulary_config(name=PYAMS_HTML_RENDERERS_VOCABULARY)
class RenderersVocabulary(SimpleVocabulary):
"""Text renderers vocabulary"""
- def __init__(self):
+ def __init__(self, context=None):
request = check_request()
registry = request.registry
- translate = registry.localizer.translate
- terms = [SimpleTerm(name, name, translate(adapt.title).label)
- for name, adapt in registry.getAdapters(('', request), IHTMLRenderer)]
+ translate = request.localizer.translate
+ terms = []
+ append = terms.append
+ for name, adapter in registry.getAdapters(('', request), IHTMLRenderer):
+ if hasattr(adapter, 'label'):
+ append(SimpleTerm(name, title=translate(adapter.label)))
super(RenderersVocabulary, self).__init__(terms)