o $aj @sUdZddlZddlmZddlmZddlmZmZddl m Z ddl m Z ddl mZdd lmZdd lmZdd lmZdd lmZdd lmZmZzddlmZWneydddlmZYnwee Z!e"dZ#e"dZ$gdZ%eddZ&ee'e'fe(d<de&d<de'de'fddZ)d1de'de'de*fddZ+ed2d!ede'd"e*de'fd#d$Z,ed%e'd&e'ded'fd(d)Z-d*ed+e'ddfd,d-Z.d*ed.e'ddfd/d0Z/dS)3z sphinx.util.rst ~~~~~~~~~~~~~~~ reST helper functions. :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. :license: BSD, see LICENSE for details. N) defaultdict)contextmanager)Dict Generatoreast_asian_width)roles)en) StringList)Reporter) Environment)__)docutilslogging)pass_environment)environmentfilterz:\w+:.*?z([!-\-/:-@\[-`{-~]))=-~cCsdS)NWFrrr1/usr/lib/python3/dist-packages/sphinx/util/rst.py'sr WIDECHARSWFAjatextreturncCstd|}tdd|}|S)Nz\\\1z^\.z\.) symbols_resubre)rrrrescape+s r!r widecharscs.dtdtdtfddtfdd|DS)zGet width of text.charr"rcSst||vrdSdS)Nr)r#r"rrr charwidth3s ztextwidth..charwidthc3s|]}|VqdS)Nr).0cr&r"rr 9sztextwidth..)strintsum)rr"rr)r textwidth1sr.r%envlevelcCs8|dksJt|t|j}t|d}d|||fS)zCreate a heading for *level*.r%z%s %s)r.rlanguageSECTIONING_CHARS)r/rr0widthsectioning_charrrrheading<s  r6docnamename)NNNccs`|r&tddd}t|td|\}}|rtd|n tjtd||ddVt ddS)Nrzdefault role %s not found)location) r rroleenglishr register_roleloggerwarningr unregister_role)r7r8dummy_reporterrole_fn_rrr default_roleEs rEcontentprologcCs|rFd}|D] }t|r|d7}q|dkr#||ddd|d7}t|D]\}}||||d|q)|||dddddSdS)z+Prepend a string to content body as prolog.rr%r9 z N) docinfo_rematchinsert enumerate splitlines)rFrGposlinelinenorrrprepend_prologTs  rQepilogcCsf|r/dt|kr|d\}}nd}d}|d||dt|D] \}}||d|q#dSdS)z*Append a string to content body as epilog.rrHr9r%z N)leninfoappendrLrM)rFrRsourcerPrOrrr append_epilogjs rX)r)r%)0__doc__r collectionsr contextlibrtypingrr unicodedatardocutils.parsers.rstrdocutils.parsers.rst.languagesr r=docutils.statemachiner docutils.utilsr jinja2r sphinx.localer sphinx.utilrr jinja2.utilsr ImportErrorr getLogger__name__r?compilerIrr3rr+__annotations__r!r,r.r6rErQrXrrrrs@