\c@@s8dZddlmZddlmZddlmZddlmZddlm Z dd l Z y e j Z Wn!e k rdd l m Z nXd Zd Zd ZdZe defdefdefdefdgZdZdZdefdYZdefdYZidZd S(u Attribute List Extension for Python-Markdown ============================================ Adds attribute list syntax. Inspired by [maruku](http://maruku.rubyforge.org/proposal.html#attribute_lists)'s feature of the same name. Copyright 2011 [Waylan Limberg](http://achinghead.com/). Contact: markdown@freewisdom.org License: BSD (see ../LICENSE.md for details) Dependencies: * [Python 2.4+](http://python.org) * [Markdown 2.1+](http://packages.python.org/Markdown/) i(tabsolute_import(tunicode_literalsi(t Extensioni(t Treeprocessor(t isBlockLevelN(tScannercC@s(|jd\}}||jdfS(Nu=u"(tsplittstrip(tstttktv((sA/usr/lib/python2.7/site-packages/markdown/extensions/attr_list.pyt_handle_double_quote"scC@s(|jd\}}||jdfS(Nu=u'(RR(RR R R ((sA/usr/lib/python2.7/site-packages/markdown/extensions/attr_list.pyt_handle_single_quote&scC@s |jdS(Nu=(R(RR ((sA/usr/lib/python2.7/site-packages/markdown/extensions/attr_list.pyt_handle_key_value*scC@sD|jdrd|dfS|jdr:d|dfS||fS(Nu.iu#uid(t startswith(RR ((sA/usr/lib/python2.7/site-packages/markdown/extensions/attr_list.pyt _handle_word-s u [^ ]+=".*?"u [^ ]+='.*?'u [^ ]+=[^ ]*u[^ ]+u cC@stj|dS(u= Parse attribute list and return a list of attribute tuples. i(t_scannertscan(tstr((sA/usr/lib/python2.7/site-packages/markdown/extensions/attr_list.pyt get_attrs<scC@s |jdkS(Nuh1uh2uh3uh4uh5uh6(uh1uh2uh3uh4uh5uh6(ttag(telem((sA/usr/lib/python2.7/site-packages/markdown/extensions/attr_list.pytisheader@stAttrListTreeprocessorcB@sqeZdZejdeZejdeZejdeZejdZdZ dZ dZ RS(u\{\:?([^\}]*)\}u [ ]+%s[ ]*$u \n[ ]*%s[ ]*$u^%suf[^A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�\:\-\.0-9·̀-ͯ‿-⁀]+c C@sx|jD]}t|jrZ|j}t|sF|jdkrR|j}nt|r|jdkrd}x3t|D]%\}}|jd kr|}PqqW|dkr|dj r|j |dj }|r|j ||j d|dj |j |d_ qqW|dk r|dkr||dj r|j ||dj }|r|j ||j d||dj |j ||d_ qqW|jrW|j |j}|r|j ||j d|j|j |_qqWqt|r|dj r|j |dj }|rW|j ||j d|dj |j |d_ t|r|dj jdj|d_ qqWq|jr|j |j}| r|jd krtj |j|j}n|rW|j ||j d|j|j |_t|rT|jjdj|_qTqWqq |j r |jj|j }|r|j ||j d|j |j|_ qq q WdS( Nudtuliuuluoliiiu#utd(uuluol(t getiteratorRRtBLOCK_RERt HEADER_REtlentNonet enumeratettailtsearcht assign_attrstgrouptstartttexttrstriptretBASE_REt INLINE_REtmatchtend(tselftdocRtREtpostitchildtm((sA/usr/lib/python2.7/site-packages/markdown/extensions/attr_list.pytrunNs^  $),  ,  ' cC@sxt|D]v\}}|dkrj|jd}|rW|jdd||fq|jd|q |j|j||q WdS(u Assign attrs to element. u.uclassu%s %sN(Rtgettsett sanitize_name(R+RtattrsR R tcls((sA/usr/lib/python2.7/site-packages/markdown/extensions/attr_list.pyR!s cC@s|jjd|S(uz Sanitize name as 'an XML Name, minus the ":"'. See http://www.w3.org/TR/REC-xml-names/#NT-NCName u_(tNAME_REtsub(R+tname((sA/usr/lib/python2.7/site-packages/markdown/extensions/attr_list.pyR5s( t__name__t __module__R'R&tcompileRRR(R8R2R!R5(((sA/usr/lib/python2.7/site-packages/markdown/extensions/attr_list.pyRCs > tAttrListExtensioncB@seZdZRS(cC@s |jjdt|ddS(Nu attr_listu >prettify(ttreeprocessorstaddR(R+tmdt md_globals((sA/usr/lib/python2.7/site-packages/markdown/extensions/attr_list.pytextendMarkdowns(R;R<RC(((sA/usr/lib/python2.7/site-packages/markdown/extensions/attr_list.pyR>scC@s td|S(Ntconfigs(R>(RD((sA/usr/lib/python2.7/site-packages/markdown/extensions/attr_list.pyt makeExtensions(u N(t__doc__t __future__RRtRR?RtutilRR&RtAttributeErrortsreR R RRRRRRRR>RE(((sA/usr/lib/python2.7/site-packages/markdown/extensions/attr_list.pyts2              _