diff --git a/docs/source/_ext/__init__.py b/docs/source/_ext/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/docs/source/_ext/fetch_md.py b/docs/source/_ext/fetch_md.py index bfc3da09..18773dd6 100644 --- a/docs/source/_ext/fetch_md.py +++ b/docs/source/_ext/fetch_md.py @@ -1,8 +1,7 @@ import os from docutils.nodes import SparseNodeVisitor from docutils.parsers.rst import Directive -from myst_parser.docutils_ import Parser -from myst_parser.mdit_to_docutils.base import make_document +from utils import md_to_docutils, get_link_key # Python2 compatibility try: @@ -13,16 +12,8 @@ except NameError: class Relinker(SparseNodeVisitor): - @staticmethod - def get_link_key(node): - link_keys = ['uri', 'refuri', 'refname'] - for key in link_keys: - if key in node.attributes.keys(): - return key - return None - def relink(self, node, base_dir): - key = Relinker.get_link_key(node) + key = get_link_key(node) if key is None: return link = node.attributes[key] @@ -45,10 +36,8 @@ class FetchMd(Directive): result = [] try: with open(path) as file: - parser = Parser() text = file.read() - doc = make_document(parser_cls=Parser) - parser.parse(text, doc) + doc = md_to_docutils(text) relinker = Relinker(doc) doc.walk(relinker) result.append(doc[0]) diff --git a/docs/source/_ext/meshroom_doc.py b/docs/source/_ext/meshroom_doc.py index acde4aab..965824be 100644 --- a/docs/source/_ext/meshroom_doc.py +++ b/docs/source/_ext/meshroom_doc.py @@ -1,7 +1,6 @@ from docutils import nodes from docutils.parsers.rst import Directive -from myst_parser.docutils_ import Parser -from myst_parser.mdit_to_docutils.base import make_document +from utils import md_to_docutils import importlib from meshroom.core import desc @@ -25,28 +24,23 @@ class MeshroomDoc(Directive): # Class inherits desc.Node if issubclass(node_class, desc.Node): node = node_class() - parser = Parser() # Category - doc = make_document(parser_cls=Parser) - parser.parse('**Category**: {}'.format(node.category), doc) + doc = md_to_docutils('**Category**: {}'.format(node.category)) result.extend(doc.children) # Documentation - doc = make_document(parser_cls=Parser) - parser.parse(node.documentation, doc) + doc = md_to_docutils(node.documentation) result.extend(doc.children) # Inputs text_inputs = '**Inputs**: \n' for attr in node.inputs: text_inputs += '- {} ({})\n'.format(attr._name, attr.__class__.__name__) - doc = make_document(parser_cls=Parser) - parser.parse(text_inputs, doc) + doc = md_to_docutils(text_inputs) result.extend(doc.children) # Outputs text_outputs = '**Outputs**: \n' for attr in node.outputs: text_outputs += '- {} ({})\n'.format(attr._name, attr.__class__.__name__) - doc = make_document(parser_cls=Parser) - parser.parse(text_outputs, doc) + doc = md_to_docutils(text_outputs) result.extend(doc.children) return result diff --git a/docs/source/_ext/utils.py b/docs/source/_ext/utils.py new file mode 100644 index 00000000..729aa8a5 --- /dev/null +++ b/docs/source/_ext/utils.py @@ -0,0 +1,17 @@ +from myst_parser.docutils_ import Parser +from myst_parser.mdit_to_docutils.base import make_document + + +def md_to_docutils(text): + parser = Parser() + doc = make_document(parser_cls=Parser) + parser.parse(text, doc) + return doc + + +def get_link_key(node): + link_keys = ['uri', 'refuri', 'refname'] + for key in link_keys: + if key in node.attributes.keys(): + return key + return None