PageRenderTime 46ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/creole/__init__.py

http://github.com/jedie/python-creole
Python | 185 lines | 161 code | 8 blank | 16 comment | 0 complexity | 4a0de13a0084ddc7df636fbeab59243b MD5 | raw file
  1. """
  2. python-creole
  3. ~~~~~~~~~~~~~
  4. :sourcecode:
  5. https://github.com/jedie/python-creole
  6. :PyPi:
  7. https://pypi.org/project/python-creole/
  8. :copyleft: 2008-2021 by python-creole team, see AUTHORS for more details.
  9. :license: GNU GPL v3 or above, see LICENSE for more details.
  10. """
  11. import warnings
  12. from creole.emitter.creol2html_emitter import HtmlEmitter
  13. from creole.emitter.html2creole_emitter import CreoleEmitter
  14. from creole.emitter.html2rest_emitter import ReStructuredTextEmitter
  15. from creole.emitter.html2textile_emitter import TextileEmitter
  16. from creole.parser.creol2html_parser import CreoleParser
  17. from creole.parser.html_parser import HtmlParser
  18. __version__ = "1.4.10"
  19. __api__ = "1.0" # Creole 1.0 spec - http://wikicreole.org/
  20. VERSION_STRING = __version__ # remove in future
  21. API_STRING = __api__ # remove in future
  22. def creole2html(markup_string, debug=False,
  23. parser_kwargs=None, emitter_kwargs=None,
  24. block_rules=None, blog_line_breaks=True,
  25. macros=None, verbose=None, stderr=None,
  26. strict=False,
  27. ):
  28. """
  29. convert creole markup into html code
  30. >>> creole2html('This is **creole //markup//**!')
  31. '<p>This is <strong>creole <i>markup</i></strong>!</p>'
  32. Info: parser_kwargs and emitter_kwargs are deprecated
  33. """
  34. assert isinstance(markup_string, str), "given markup_string must be unicode!"
  35. parser_kwargs2 = {
  36. "block_rules": block_rules,
  37. "blog_line_breaks": blog_line_breaks,
  38. "debug": debug,
  39. }
  40. if parser_kwargs is not None:
  41. warnings.warn(
  42. "parser_kwargs argument in creole2html would be removed in the future!",
  43. PendingDeprecationWarning)
  44. parser_kwargs2.update(parser_kwargs)
  45. # Create document tree from creole markup
  46. document = CreoleParser(markup_string, **parser_kwargs2).parse()
  47. if debug:
  48. document.debug()
  49. emitter_kwargs2 = {
  50. "macros": macros,
  51. "verbose": verbose,
  52. "stderr": stderr,
  53. "strict": strict,
  54. }
  55. if emitter_kwargs is not None:
  56. warnings.warn(
  57. "emitter_kwargs argument in creole2html would be removed in the future!",
  58. PendingDeprecationWarning)
  59. emitter_kwargs2.update(emitter_kwargs)
  60. # Build html code from document tree
  61. return HtmlEmitter(document, **emitter_kwargs2).emit()
  62. def parse_html(html_string, debug=False):
  63. """ create the document tree from html code """
  64. assert isinstance(html_string, str), "given html_string must be unicode!"
  65. h2c = HtmlParser(debug=debug)
  66. document_tree = h2c.feed(html_string)
  67. if debug:
  68. h2c.debug()
  69. return document_tree
  70. def html2creole(
  71. html_string,
  72. debug=False,
  73. parser_kwargs=None,
  74. emitter_kwargs=None,
  75. unknown_emit=None,
  76. strict=False,
  77. ):
  78. """
  79. convert html code into creole markup
  80. >>> html2creole('<p>This is <strong>creole <i>markup</i></strong>!</p>')
  81. 'This is **creole //markup//**!'
  82. """
  83. if parser_kwargs is not None:
  84. warnings.warn(
  85. "parser_kwargs argument in html2creole would be removed in the future!",
  86. PendingDeprecationWarning)
  87. document_tree = parse_html(html_string, debug=debug)
  88. emitter_kwargs2 = {
  89. "unknown_emit": unknown_emit,
  90. "strict": strict,
  91. }
  92. if emitter_kwargs is not None:
  93. warnings.warn(
  94. "emitter_kwargs argument in html2creole would be removed in the future!",
  95. PendingDeprecationWarning)
  96. emitter_kwargs2.update(emitter_kwargs)
  97. # create creole markup from the document tree
  98. emitter = CreoleEmitter(document_tree, debug=debug, **emitter_kwargs2)
  99. return emitter.emit()
  100. def html2textile(html_string, debug=False,
  101. parser_kwargs=None, emitter_kwargs=None,
  102. unknown_emit=None
  103. ):
  104. """
  105. convert html code into textile markup
  106. >>> html2textile('<p>This is <strong>textile <i>markup</i></strong>!</p>')
  107. 'This is *textile __markup__*!'
  108. """
  109. if parser_kwargs is not None:
  110. warnings.warn(
  111. "parser_kwargs argument in html2textile would be removed in the future!",
  112. PendingDeprecationWarning)
  113. document_tree = parse_html(html_string, debug=debug)
  114. emitter_kwargs2 = {
  115. "unknown_emit": unknown_emit,
  116. }
  117. if emitter_kwargs is not None:
  118. warnings.warn(
  119. "emitter_kwargs argument in html2textile would be removed in the future!",
  120. PendingDeprecationWarning)
  121. emitter_kwargs2.update(emitter_kwargs)
  122. # create textile markup from the document tree
  123. emitter = TextileEmitter(document_tree, debug=debug, **emitter_kwargs2)
  124. return emitter.emit()
  125. def html2rest(html_string, debug=False,
  126. parser_kwargs=None, emitter_kwargs=None,
  127. unknown_emit=None
  128. ):
  129. """
  130. convert html code into ReStructuredText markup
  131. >>> html2rest('<p>This is <strong>ReStructuredText</strong> <em>markup</em>!</p>')
  132. 'This is **ReStructuredText** *markup*!'
  133. """
  134. if parser_kwargs is not None:
  135. warnings.warn("parser_kwargs argument in html2rest would be removed in the future!", PendingDeprecationWarning)
  136. document_tree = parse_html(html_string, debug=debug)
  137. emitter_kwargs2 = {
  138. "unknown_emit": unknown_emit,
  139. }
  140. if emitter_kwargs is not None:
  141. warnings.warn(
  142. "emitter_kwargs argument in html2rest would be removed in the future!",
  143. PendingDeprecationWarning)
  144. emitter_kwargs2.update(emitter_kwargs)
  145. # create ReStructuredText markup from the document tree
  146. emitter = ReStructuredTextEmitter(document_tree, debug=debug, **emitter_kwargs2)
  147. return emitter.emit()