Open
Description
First of all, I would like to thank you as someone who is using this library.
I'm using this library with a markdown version. (draftjs_exporter_markdown)
Because the dom of draftjs_exporter.dom.DOM is a class-level variable, it could be a problem depending on the timing of creating two versions of the HTML object.
Furthermore, I'm using this on a web server, this can cause bigger problems in a multithreaded environment.
Not only the markdown version, but the 3 engines built-in draftjs_exporter will cause the same problem.
Could you solve this problem?
Attached test code and results.
from draftjs_exporter.dom import DOM
from draftjs_exporter.html import HTML
from draftjs_exporter.constants import ENTITY_TYPES
from draftjs_exporter_markdown import ENGINE as MARKDOWN_ENGINE
template = {
'blocks': [
{'key': 'rrwx',
'type': 'unstyled',
'text': '<a href="https://www.google.com">google.com</a>',
'depth': 0,
'inlineStyleRanges': [],
'entityRanges': [{'offset': 9, 'length': 22, 'key': 0}],
'data': {}}],
'entityMap': {'0': {'type': 'LINK',
'mutability': 'MUTABLE',
'data': {'url': 'https://www.google.com'}}}}
html_exporter = HTML({
'entity_decorators': {
ENTITY_TYPES.LINK: lambda props: DOM.create_element('a', {
'href': props['url']
}, props['children']),
},
'engine': DOM.LXML
})
html1 = html_exporter.render(template)
markdown_exporter = HTML({
'engine': MARKDOWN_ENGINE
})
html2 = html_exporter.render(template)
print(html1)
print(html2)
output:
<p><a href="<a href="https://www.google.com">https://www.google.com</a>">google.com</a></p>
<p><a href="<a href="https://www.google.com">https://www.google.com</a>">google.com</a></p>