3 \@sddlmZddlmZddlmZddlmZdZdZ d Z d Z d eZ d eZ d ZdZde ZdZde Zde Zde Zde ZdZdZd"\ZZZZGdddeZGdddeZd#d 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@seZdZddZddZdS)SubstituteTextPatterncCstj||||_||_dS)z" Replaces matches with some text. N)r__init__replacemarkdown)selfpatternrmarkdown_instancer'build/lib/markdown/extensions/smarty.pyrws zSubstituteTextPattern.__init__cCsHd}x>|jD]4}t|tr*||j|7}q ||jjj|dd7}q W|S)NT)safe)r isinstanceintgroupr htmlStashstore)rmresultpartrrr handleMatch}s   z!SubstituteTextPattern.handleMatchN)__name__ __module__ __qualname__rr!rrrrrvsrc@s<eZdZddZddZddZddZd d Zd d Zd S)SmartyExtensioncCs@ddgddgddgd|_x |D]\}}|j|t|q WdS)NTzEducate quoteszEducate dasheszEducate ellipses) smart_quotes smart_dashessmart_ellipses)config setConfigr)rconfigskeyvaluerrrrs zSmartyExtension.__init__cCs`xZt|D]N\}}||f7}t|}|r8d||dfnd}d||f}|jj|||q WdS)Nz >smarty-%s-%drz>entityz smarty-%s-%d) enumeraterinlinePatternsadd)rmdpatternsZserieindrafternamerrr _addPatternss   zSmartyExtension._addPatternscCs<tdd |}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)rr1ZellipsesPatternrrreducateEllipsess zSmartyExtension.educateEllipsesc Csttffttfftttfftttfftdtfft tfft tdfft tfft dtfft tffttffttfff }|j||ddS)NrZquotes)singleQuoteStartRersquodoubleQuoteStartRerdquodoubleQuoteSetsReldquolsquosingleQuoteSetsReopeningSingleQuotesRegexclosingSingleQuotesRegexclosingSingleQuotesRegex2remainingSingleQuotesRegexopeningDoubleQuotesRegexclosingDoubleQuotesRegexclosingDoubleQuotesRegex2remainingDoubleQuotesRegexr6)rr1r2rrr educateQuotess      zSmartyExtension.educateQuotescCsR|j}|dr|j||dr,|j||dr>|j||jjddgdS)Nr&r'r(r r) getConfigsrLr9r; ESCAPED_CHARSextend)rr1 md_globalsr+rrrextendMarkdowns   zSmartyExtension.extendMarkdownN) r"r#r$rr6r9r;rLrQrrrrr%s  r%NcCst|S)N)r%)r+rrr makeExtensionsrR)r r r r )N) __future__rrrinlinepatternsrutilrZ punctClassZendOfWordClassZ closeClassZopeningQuotesBaser<r>r@rCrHrIrJrDrErFrGrKrBr=rAr?rr%rRrrrrDs.      8