def check_docutils_inliner(po, msgstr): inliner = Inliner() settings = AttrDict({'character_level_inline_markup': False, 'pep_references': None, 'rfc_references': None}) inliner.init_customizations(settings) document = new_document(None) document.settings.syntax_highlight = 'long' stream = StringIO() reporter = Reporter(po.file, report_level=Reporter.WARNING_LEVEL, halt_level=Reporter.SEVERE_LEVEL, stream=stream) memo = Struct(document=document, reporter=reporter, language=None, inliner=inliner) inliner.parse(msgstr, po.current_index, memo, None) return stream.getvalue()
def _parse(self, line): """ Parses a single line/string for inline rst statements, like strong, emphasis, literal, ... :param line: string to parse :return: nodes """ inline_parser = Inliner() inline_parser.init_customizations(self.doc_settings) result, message = inline_parser.parse(line, 0, self.doc_memo, self.dummy_doc) if message: raise SphinxNeedLayoutException(message) return result
def rolefunc( role_name: str, # e.g. "role" rawtext: str, # e.g. ":role:`text`" text: str, # e.g. "text" lineno: int, inliner: Inliner, options: Dict[str, Any] = None, content: List[str] = None, ) -> Tuple[List[Node], List[str]]: """ Attempt to implemented substitutions inside inline markup. This is not directly supported: https://sourceforge.net/p/docutils/feature-requests/53/ Role functions: see http://docutils.sourceforge.net/docs/howto/rst-roles.html See also: https://github.com/sphinx-doc/sphinx/issues/2173 Returns the tuple (nodes, messages). Search docutils for "role_fn" to see how this function will be called. """ options = options or {} # type: Dict[str, Any] content = content or [] # type: List[str] log.debug("rolefunc() called with role_name={rn!r}, rawtext={rt!r}, " "text={t!r}, lineno={ln}, inliner={i!r}, " "options={o!r}, content={c!r}".format( rn=role_name, rt=rawtext, t=text, ln=lineno, i=inliner, o=options, c=content, )) parsed_nodes, parsed_msgs = inliner.parse( text=text, lineno=0, memo=inliner, parent=None) # type: Tuple[List[Node], List[str]] top_node = nodes.inline( # was nodes.inline text="", refid=css_class, **options) # type: Element top_node["classes"].append( css_class) # see deprecated Element.set_class # noqa top_node += parsed_nodes # adds children to this_node; see Element return [top_node], []
def _role_annot( name: str, rawtext: str, text: str, lineno: int, inliner: Inliner, options: Dict[str, Any] = {}, content: Sequence[str] = (), # *, # https://github.com/ambv/black/issues/613 additional_classes: Iterable[str] = (), ) -> Tuple[List[Node], List[SystemMessage]]: options = options.copy() set_classes(options) if additional_classes: options["classes"] = options.get("classes", []).copy() options["classes"].extend(additional_classes) memo = Struct(document=inliner.document, reporter=inliner.reporter, language=inliner.language) node = nodes.inline(unescape(rawtext), "", **options) children, messages = inliner.parse(_unescape(text), lineno, memo, node) node.extend(children) return [node], messages