Ë %iÒ†mjãóš—dZddlmZ ddlZddlmZddlmZdZgd¢Z Gd „d e«Z Gd „d «Z Gd „d«Z y#e $rdZYŒ-wxYw)z@Lexical analysis of formal languages (i.e. code) using Pygments.é)ÚApplicationErrorN)Úget_lexer_by_name)Ú_get_ttype_classTF)ÚtokenÚtextÚcó —eZdZy)Ú LexerErrorN)Ú__name__Ú __module__Ú __qualname__©óúA/usr/lib/python3.12/site-packages/docutils/utils/code_analyzer.pyr r s„Ørr có$—eZdZdZdd„Zd„Zd„Zy)ÚLexera¡Parse `code` lines and yield "classified" tokens. Arguments code -- string of source code to parse, language -- formal language the code is written in, tokennames -- either 'long', 'short', or 'none' (see below). Merge subsequent tokens of the same token-type. Iterating over an instance yields the tokens as ``(tokentype, value)`` tuples. The value of `tokennames` configures the naming of the tokentype: 'long': downcased full token type name, 'short': short name defined by pygments.token.STANDARD_TYPES (= class argument used in pygments html output), 'none': skip lexical analysis. có—||_||_||_d|_|dvs|dk(ryts t d«‚ t |j«|_y#tjj$rt d|z«‚wxYw)zE Set up a lexical analyzer for `code` in `language`. N)rrÚnonez0Cannot analyze code. Pygments package not found.z6Cannot analyze code. No Pygments lexer found for "%s".) ÚcodeÚlanguageÚ tokennamesÚlexerÚ with_pygmentsr rÚpygmentsÚutilÚ ClassNotFound)Úselfrrrs rÚ__init__zLexer.__init__/s–€ðˆŒ Ø ˆŒ Ø$ˆŒØˆŒ à �|Ñ # z°VÒ';Ø ÝÜð;ó<ð <ð MÜ*¨4¯=©=Ó9ˆD�JøÜ�}‰}×*Ñ*ò MÜðAØCKñLóMð Mð Mús ¹AÁ,Bc#ó¸K—t|«}t|«\}}|D]\}}||ur||z }Œ||f–—||}}Œ|jd«r|dd}|r||f–—yy­w)zrMerge subsequent tokens of same token-type. Also strip the final newline (added by pygments). Ú Néÿÿÿÿ)ÚiterÚnextÚendswith)rÚtokensÚlasttypeÚlastvalÚttypeÚvalues rÚmergez Lexer.mergeJs�èø€ô �f“ˆÜ" 6›lш�7Û"‰LˆE�5Ø˜Ñ Ø˜5Ñ ‘à Ð'Ò'Ø',¨e˜7‘ð #ð × Ñ ˜DÔ !ؘc˜r�lˆG٠ؘGÐ#Ó #ð ùs‚AAc#óšK—|j€g|jf–—ytj|j|j«}|j |«D]g\}}|j dk(r)t |«j«jd«}n t|«g}|D�cgc] }|tvsŒ |‘Œ}}||f–—Œiycc}w­w)z7Parse self.code and yield "classified" tokens. NÚlongÚ.) rrrÚlexr*rÚstrÚlowerÚsplitrÚunstyled_tokens)rr%Ú tokentyper)ÚclassesÚclss rÚ__iter__zLexer.__iter__\s´èø€ð �:‰:Ð Ø�d—i‘i�-Ò Ø Ü—‘˜dŸi™i¨¯©Ó4ˆØ $§ ¡ ¨6Ö 2Ñ ˆI�uØ�‰ &Ò(ܘi›.×.Ñ.Ó0×6Ñ6°sÓ;‘ä+¨IÓ6Ð7�Ù&-ÓL¡g˜s°¼OÒ1K’s gˆGÐLؘ5�.Ó ñ !3ùò Mùs‚B'C Â) CÂ7CÂ;C N)Úshort)r r r Ú__doc__rr*r6rrrrrs„ñó&Mò6$ó$ !rrcó—eZdZdZd„Zd„Zy)Ú NumberLinesaqInsert linenumber-tokens at the start of every code line. Arguments tokens -- iterable of ``(classes, value)`` tuples startline -- first line number endline -- last line number Iterating over an instance yields the tokens with a ``(['ln'], '')`` token added for every code line. Multi-line tokens are split.cóX—||_||_dtt|««z|_y)Nz%%%dd )r%Ú startlineÚlenr/Úfmt_str)rr%r<Úendlines rrzNumberLines.__init__ys%€ØˆŒ Ø"ˆŒà¤#¤c¨'£lÓ"3Ñ3ˆ� rc#óK—|j}dg|j|zf–—|jD]K\}}|jd«}|ddD]$}||dzf–—|dz }dg|j|zf–—Œ&||df–—ŒMy­w)NÚlnr r!é)r<r>r%r1)rÚlinenor(r)ÚlinesÚlines rr6zNumberLines.__iter__s”èø€Ø—‘ˆØˆf�d—l‘l VÑ+Ð+Ò+Ø ŸKœK‰LˆE�5Ø—K‘K Ó%ˆEؘc˜r› �ؘT D™[Ð(Ò(ؘ!‘ �Ø�f˜dŸl™l¨VÑ3Ð3Ó3ð#ð˜˜r™Ð"Ó "ñ (ùs‚AN)r r r r8rr6rrrr:r:ls„ñ $ò4ó #rr:)r8ÚdocutilsrrÚpygments.lexersrÚpygments.formatters.htmlrrÚ ImportErrorr2r rr:rrrÚrJscðñ Gå%ðÛÝ1Ý9Ø€Mò €ô  Ð!ô ÷N!ñN!÷b#ò#øðòØ‚MðúsŠAÁA Á A