diff --git a/src/pyj/utils.pyj b/src/pyj/utils.pyj index 4ae916bab6..112af61a03 100644 --- a/src/pyj/utils.pyj +++ b/src/pyj/utils.pyj @@ -198,6 +198,25 @@ def conditional_timeout(elem_id, timeout, func): func.call(elem) window.setTimeout(ct_impl, timeout) + +def simple_markup(html): + html = (html or '').replace(/\u{ffff}/ug, '').replace( + /<\s*(\/?[a-zA-Z1-6]+)[^>]*>/g, def (match, tag): + tag = tag.toLowerCase() + is_closing = '/' if tag[0] is '/' else '' + if is_closing: + tag = tag[1:] + if simple_markup.allowed_tags.indexOf(tag) < 0: + tag = 'span' + return f'\uffff{is_closing}{tag}\uffff' + ) + div = document.createElement('b') + div.textContent = html + html = div.innerHTML + return html.replace(/\u{ffff}(\/?[a-z1-6]+)\u{ffff}/ug, '<$1>') +simple_markup.allowed_tags = v"'b|i|br|h1|h2|h3|h4|h5|h6|div|em|strong|span'.split('|')" + + if __name__ is '__main__': from pythonize import strings strings()