ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙ ǚPc@sadZddlmZddlmZddlmZmZmZdZdZ dZ dS( s@gettext message extraction via Babel: http://babel.edgewall.org/i(tStringIO(textract_python(tlexert parsetreetutilccsn|jd|jdd}tj|jd|j}x(t|j|||D] }|Vq[WdS(sExtract messages from Mako templates. :param fileobj: the file-like object the messages should be extracted from :param keywords: a list of keywords (i.e. function names) that should be recognized as translation functions :param comment_tags: a list of translator tags to search for and include in the results :param options: a dictionary of additional options (optional) :return: an iterator over ``(lineno, funcname, message, comments)`` tuples :rtype: ``iterator`` tinput_encodingtencodingN(tgettNoneRtLexertreadtparset extract_nodest get_children(tfileobjtkeywordst comment_tagstoptionsRt template_nodet extracted((sE/opt/alt/python27/lib/python2.7/site-packages/mako/ext/babelplugin.pytextracts ccsg}t}xo|D]g}d }|rMt|tjrM|jj rMqnt|tjr|jj}|r|j t |j |qnx?|D]7} |j | rt }|j t |j |qqWqnt|tjr|jj} |j}nnt|tjr/|jj} |j}nDt|tjrY|jj} |j}nt|tjrz|jj} nt|tjrdjg|jjD]\} } d| | f^q} d| } |j}nt|tjr|jr g}t}qn|j} n]t|tjrCg}t}|jj} n0t|tjrd|jj} ng}t}q|r|dd|j dkrg}ng|D]}|d^q}tj rt| t r| j!dd} nt"| } xIt#| |||D]2\}}}}|j |d||||fVq Wg}t}|rx%t$||||D] }|VqhWqqWd S( s'Extract messages from Mako's lexer node objects :param nodes: an iterable of Mako parsetree.Node objects to extract from :param keywords: a list of keywords (i.e. function names) that should be recognized as translation functions :param comment_tags: a list of translator tags to search for and include in the results :param options: a dictionary of additional options (optional) :return: an iterator over ``(lineno, funcname, message, comments)`` tuples :rtype: ``iterator`` s, s%s=%ss{%s}iiitasciitbackslashreplaceN(%tFalseRt isinstanceRtTexttcontenttstriptCommentttexttextendt_split_commenttlinenot startswithtTruetDefTagt function_decltcodetnodestBlockTagt body_decltCallTagtPageTagtCallNamespaceTagtjoint attributest iteritemst ControlLinetisendtCodet ExpressionRtpy3ktunicodetencodeRRR (R&RRRttranslator_commentstin_translator_commentstnodet child_nodestvaluet comment_tagR%tkeytvaltattribstcommentR tfuncnametmessagestpython_translator_commentsR((sE/opt/alt/python27/lib/python2.7/site-packages/mako/ext/babelplugin.pyR "s          2      % cCs3gt|jD]\}}|||f^qS(svReturn the multiline comment at lineno split into a list of comment line numbers and the accompanying comment line(t enumeratet splitlines(R R?tindextline((sE/opt/alt/python27/lib/python2.7/site-packages/mako/ext/babelplugin.pyRsN( t__doc__Rtbabel.messages.extractRtmakoRRRRR R(((sE/opt/alt/python27/lib/python2.7/site-packages/mako/ext/babelplugin.pyts   ^