diff --git a/src/moin/macros/ShowSmileys.py b/src/moin/macros/ShowSmileys.py new file mode 100644 index 000000000..fe4fed40e --- /dev/null +++ b/src/moin/macros/ShowSmileys.py @@ -0,0 +1,28 @@ +# Copyright: 2024 MoinMoin:UlrichB +# License: GNU GPL v2 (or any later version), see LICENSE.txt for details. + +""" +Show all available smileys that may be included in wiki item content +""" + +from flask import url_for + +from moin.utils.tree import html +from moin.macros._base import MacroBlockBase +from moin.i18n import _ +from moin.converters._table import TableMixin +from moin.converters.smiley import Converter + + +class Macro(MacroBlockBase): + def macro(self, content, arguments, page_url, alternative): + smileys = Converter.smileys + headings = (_('Markup'), _('Result'), _('Name')) + rows = [] + for key in smileys.keys(): + icon_name = smileys[key] + src = url_for('static', filename='img/icons/' + icon_name + ".png") + rows.append((key, html.img(attrib={html.src: src, html.alt: icon_name}), icon_name)) + table = TableMixin() + ret = table.build_dom_table(rows, head=headings) + return ret diff --git a/src/moin/macros/_tests/test_ShowSmileys.py b/src/moin/macros/_tests/test_ShowSmileys.py new file mode 100644 index 000000000..e14b0c764 --- /dev/null +++ b/src/moin/macros/_tests/test_ShowSmileys.py @@ -0,0 +1,25 @@ +# Copyright: 2024 MoinMoin:UlrichB +# License: GNU GPL v2 (or any later version), see LICENSE.txt for details. + +""" +Test for macros.ShowSmileys +""" + +from moin.macros.ShowSmileys import Macro + + +def test_Macro(): + """ test for Macro.macro """ + expected_text = ['X-(', 'angry', ':D', 'biggrin', '<:(', 'frown', '{o}', 'star_off', ] + expected_tag = '{http://moinmo.in/namespaces/page}table-row' + macro_obj = Macro() + macro_out = macro_obj.macro('content', None, 'page_url', 'alternative') + result_text = [] + result_tags = [] + for node in macro_out.iter_elements_tree(): + if getattr(node, 'text'): + result_text.append(getattr(node, 'text')) + if getattr(node, 'tag'): + result_tags.append(str(getattr(node, 'tag'))) + assert set(expected_text).issubset(result_text) + assert expected_tag in result_tags