"^Lc@sdZddlZddlmZddddgZejdZejd Zdefd YZ d Z d e fd YZ y ddl mZmZmZWn-ek rddlmZmZmZnXdS(s markupsafe ~~~~~~~~~~ Implements a Markup string. :copyright: (c) 2010 by Armin Ronacher. :license: BSD, see LICENSE for more details. iN(timaptMarkupt soft_unicodetescapet escape_silents(|<[^>]*>)s &([^;]+);cBsveZdZd'Zdd(ddZdZdZdZdZ e Z dZ d Z d Z ej je _d Zejje_d Zejje_d Zejje_dZdZedZdZx!d)D]Zeeee>> Markup("Hello World!") Markup(u'Hello World!') >>> class Foo(object): ... def __html__(self): ... return 'foo' ... >>> Markup(Foo()) Markup(u'foo') If you want object passed being always treated as unsafe you can use the :meth:`escape` classmethod to create a :class:`Markup` object: >>> Markup.escape("Hello World!") Markup(u'Hello <em>World</em>!') Operations on a markup string are markup aware which means that all arguments are passed through the :func:`escape` function: >>> em = Markup("%s") >>> em % "foo & bar" Markup(u'foo & bar') >>> strong = Markup("%(text)s") >>> strong % {'text': 'hacker here'} Markup(u'<blink>hacker here</blink>') >>> Markup("Hello ") + "" Markup(u'Hello <foo>') utstrictcCsPt|dr|j}n|dkr:tj||Stj||||S(Nt__html__(thasattrRtNonetunicodet__new__(tclstbasetencodingterrors((s9/usr/lib64/python2.7/site-packages/markupsafe/__init__.pyR Cs  cCs|S(N((tself((s9/usr/lib64/python2.7/site-packages/markupsafe/__init__.pyRJscCsEt|dst|trA|jt|tt|StS(NR(Rt isinstancet basestringt __class__R RtNotImplemented(Rtother((s9/usr/lib64/python2.7/site-packages/markupsafe/__init__.pyt__add__Ms#cCsEt|dst|trA|jtt|t|StS(NR(RRRRR RR(RR((s9/usr/lib64/python2.7/site-packages/markupsafe/__init__.pyt__radd__Rs#cCs2t|ttfr.|jtj||StS(N(RtinttlongRR t__mul__R(Rtnum((s9/usr/lib64/python2.7/site-packages/markupsafe/__init__.pyRWscCsLt|tr'ttt|}n t|}|jtj||S(N(RttupleRt_MarkupEscapeHelperRR t__mod__(Rtarg((s9/usr/lib64/python2.7/site-packages/markupsafe/__init__.pyR]s cCsd|jjtj|fS(Ns%s(%s)(Rt__name__R t__repr__(R((s9/usr/lib64/python2.7/site-packages/markupsafe/__init__.pyR ds cCs"|jtj|tt|S(N(RR tjoinRR(Rtseq((s9/usr/lib64/python2.7/site-packages/markupsafe/__init__.pyR!jscOst|jtj|||S(N(tmapRR tsplit(Rtargstkwargs((s9/usr/lib64/python2.7/site-packages/markupsafe/__init__.pyR$nscOst|jtj|||S(N(R#RR trsplit(RR%R&((s9/usr/lib64/python2.7/site-packages/markupsafe/__init__.pyR'rscOst|jtj|||S(N(R#RR t splitlines(RR%R&((s9/usr/lib64/python2.7/site-packages/markupsafe/__init__.pyR(vscs5ddlmfd}tj|t|S(sUnescape markup again into an unicode string. This also resolves known HTML4 and XHTML entities: >>> Markup("Main » About").unescape() u'Main \xbb About' i(t HTML_ENTITIEScs|jd}|kr)t|SyN|d dkrStt|ddS|jdrvtt|dSWntk rnXdS( Niis#xs#Xit#u(s#xs#X(tgrouptunichrRt startswitht ValueError(tmtname(R)(s9/usr/lib64/python2.7/site-packages/markupsafe/__init__.pyt handle_matchs  (tmarkupsafe._constantsR)t _entity_retsubR (RR1((R)s9/usr/lib64/python2.7/site-packages/markupsafe/__init__.pytunescapezs cCs1djtjd|j}t|jS(sUnescape markup into an unicode string and strip all tags. This also resolves known HTML4 and XHTML entities. Whitespace is normalized to one: >>> Markup("Main » About").striptags() u'Main \xbb About' u t(R!t _striptags_reR4R$RR5(Rtstripped((s9/usr/lib64/python2.7/site-packages/markupsafe/__init__.pyt striptagss!cCs)t|}|j|k r%||S|S(sEscape the string. Works like :func:`escape` with the difference that for subclasses of :class:`Markup` this function would return the correct subclass. (RR(R tstrv((s9/usr/lib64/python2.7/site-packages/markupsafe/__init__.pyRs  cs:tt|fd}j|_j|_|S(NcsGtt|t|}t||j|j|||S(N(t_escape_argspectlistt enumeratet iteritemsR(RR%R&(torig(s9/usr/lib64/python2.7/site-packages/markupsafe/__init__.pytfuncs(tgetattrR Rt__doc__(R0RA((R@s9/usr/lib64/python2.7/site-packages/markupsafe/__init__.pyt make_wrappers   t __getitem__t capitalizettitletlowertuppertreplacetljusttrjusttlstriptrstriptcentertstript translatet expandtabstswapcasetzfillt partitioncCs(tt|jtj|t|S(N(RR#RR RUR(Rtsep((s9/usr/lib64/python2.7/site-packages/markupsafe/__init__.pyRUs cCs(tt|jtj|t|S(N(RR#RR t rpartitionR(RRV((s9/usr/lib64/python2.7/site-packages/markupsafe/__init__.pyRWs tformatt __getslice__(N(s __getitem__s capitalizestitleslowersuppersreplacesljustsrjustslstripsrstripscentersstrips translates expandtabssswapcaseszfill(Rt __module__RCt __slots__RR RRRRt__rmul__RR R!R R$R'R(R5R9t classmethodRRDtmethodtlocalsRRURWRXRY(((s9/usr/lib64/python2.7/site-packages/markupsafe/__init__.pyRsF*                cCsLxE|D]=\}}t|ds1t|trt|||scCstt|jS(N(tstrRR`(R:((s9/usr/lib64/python2.7/site-packages/markupsafe/__init__.pyRfscCstt|jS(N(R RR`(R:((s9/usr/lib64/python2.7/site-packages/markupsafe/__init__.pyRfscCsttt|jS(N(RgRtreprR`(R:((s9/usr/lib64/python2.7/site-packages/markupsafe/__init__.pyRfscCs t|jS(N(RR`(R:((s9/usr/lib64/python2.7/site-packages/markupsafe/__init__.pyRfscCs t|jS(N(tfloatR`(R:((s9/usr/lib64/python2.7/site-packages/markupsafe/__init__.pyRfs( RRZRCRdREt__str__t __unicode__R t__int__t __float__(((s9/usr/lib64/python2.7/site-packages/markupsafe/__init__.pyRs      (RRR(RCtret itertoolsRt__all__tcompileR7R3R RR<tobjectRtmarkupsafe._speedupsRRRt ImportErrortmarkupsafe._native(((s9/usr/lib64/python2.7/site-packages/markupsafe/__init__.pyt s