\@s ddlmZddlmZddlmZddlmZdZdZ d Z d Z d eZ d eZ d ZdZde ZdZde Zde Zde Zde ZdZdZd"\ZZZZGdddeZGdddeZdd d!ZdS)#)unicode_literals) Extension) HtmlPattern)parseBoolValuez)[!"#\$\%'()*+,-.\/:;<=>?\@\[\\\]\^_`{|}~]z [\s.,;:!?)]z[^\ \[\{\(\-]u1(\s| |--|–|—|&[mn]dash;|–|—)z ^'(?=%s\\B)z ^"(?=%s\\B)z"'(?=\w)z'"(?=\w)z %s"(?=\w)z"(?=\s)z(?<=%s)"z %s'(?=\w)z(?<=%s)'(?!\s|s\b|\d)z(?<=%s)'(\s|s\b)'"‘’“”c@s(eZdZddZddZdS)SubstituteTextPatterncCs&tj||||_||_dS)z" Replaces matches with some text. N)r__init__replacemarkdown)selfpatternrmarkdown_instancer'build/lib/markdown/extensions/smarty.pyrws zSubstituteTextPattern.__init__cCsbd}xU|jD]J}t|tr;||j|7}q||jjj|dd7}qW|S)NsafeT)r isinstanceintgroupr htmlStashstore)rmresultpartrrr handleMatch}s #z!SubstituteTextPattern.handleMatchN)__name__ __module__ __qualname__rr!rrrrrvs  rc@sXeZdZddZddZddZddZd d Zd d Zd S)SmartyExtensioncCsaiddgd6ddgd6ddgd6|_x*|D]"\}}|j|t|q7WdS)NTzEducate quotes smart_quoteszEducate dashes smart_dasheszEducate ellipsessmart_ellipses)config setConfigr)rconfigskeyvaluerrrrs   zSmartyExtension.__init__cCsxyt|D]k\}}||f7}t|}|rLd||dfnd}d||f}|jj|||q WdS)Nz >smarty-%s-%drz>entityz smarty-%s-%d) enumeraterinlinePatternsadd)rmdpatternsZserieindrafternamerrr _addPatternss    zSmartyExtension._addPatternscCsTtdd |}tdd |}|jjd|d|jjd|ddS) Nz(?entityzsmarty-en-dashesz>smarty-em-dashes)r7)r8)rr/r0)rr1ZemDashesPatternZenDashesPatternrrr educateDashess zSmartyExtension.educateDashescCs,tdd|}|jjd|ddS)Nz(?entity)r:)rr/r0)rr1ZellipsesPatternrrreducateEllipsesszSmartyExtension.educateEllipsesc Csttffttfftttfftttfftdtfft tfft tdfft tfft dtfft tffttffttfff }|j||ddS)NrZquotes)singleQuoteStartRersquodoubleQuoteStartRerdquodoubleQuoteSetsReldquolsquosingleQuoteSetsReopeningSingleQuotesRegexclosingSingleQuotesRegexclosingSingleQuotesRegex2remainingSingleQuotesRegexopeningDoubleQuotesRegexclosingDoubleQuotesRegexclosingDoubleQuotesRegex2remainingDoubleQuotesRegexr6)rr1r2rrr educateQuotess      zSmartyExtension.educateQuotescCst|j}|dr&|j|n|dr@|j|n|drZ|j|n|jjddgdS)Nr&r'r(r r) getConfigsrLr9r; ESCAPED_CHARSextend)rr1 md_globalsr+rrrextendMarkdowns    zSmartyExtension.extendMarkdownN) r"r#r$rr6r9r;rLrQrrrrr%s     r%NcCs t|S)N)r%)r+rrr makeExtensionsrR)r r r r ) __future__rrrinlinepatternsrutilrZ punctClassZendOfWordClassZ closeClassZopeningQuotesBaser<r>r@rCrHrIrJrDrErFrGrKrBr=rAr?rr%rRrrrrDs.       8