Ñò ô†³Kc@sýdZddkZddkZddklZdaddgZd„Zd„Z ei Z d„Z d e fd „ƒYZdefd „ƒYZdefd „ƒYZd efd„ƒYZdefd„ƒYZedjoddkZeiƒndS(s3 This module implements a class for handling URLs. iÿÿÿÿN(trequesttURLtImagecCs(|djodStit|ƒdƒS(Nti(tNonetcgitescapetstr(tv((s-/usr/lib/python2.6/site-packages/paste/url.pyt html_quotes cCs%|djodStit|ƒƒS(NR(RturllibtquoteR(R((s-/usr/lib/python2.6/site-packages/paste/url.pyt url_quotes c Csm|djodS|tjodS|tjodSt|tƒodditt|ƒƒSt|tƒoIddig}|D])\}}|dt|ƒt|ƒfq…~ƒSt|t ƒo t |ƒSt|t ƒot |i dƒƒSt|t tfƒo t |ƒSt|tƒot |ƒid ƒSt|d ƒo |iƒStd |ƒ‚dS( Ntnulltfalsettrues[%s]s, s{%s}s%s: %ssUTF-8tLt __js_repr__s<I don't know how to turn %r into a Javascript representation(RtFalsetTruet isinstancetlisttjointmaptjs_reprtdictRtreprtunicodetencodetfloattinttlongtlstripthasattrRt ValueError(Rt_[1]tkeytvalue((s-/usr/lib/python2.6/site-packages/paste/url.pyRs2    9   t URLResourcecBs eZdZhZdddd„Zeedddd„ZeeƒZd„Z d„Z d„Z d„Z d„Z d„Zd „Zd „Zd „ZeZd „Zd „ZeeƒZd„Zd„ZeeƒZd„Zd„Zd„Zd„Zd„ZRS(sD This is an abstract superclass for different kinds of URLs cCsq|pd|_|pg|_|ph|_|iiƒ|_|ph|_|o|ii|ƒndS(Nt/(turltvarstattrstdefault_paramstcopytparamstoriginal_paramstupdate(tselfR(R)R*R-((s-/usr/lib/python2.6/site-packages/paste/url.pyt__init__@sc Cs‰ti|dtd|d|d|ƒ}|o?|djoti|ƒ}qsti|dtdtƒ}nd}||d|ƒ} | S(Ntwith_query_stringtwith_path_infot script_namet path_infotkeep_blank_valueststrict_parsingR)(Rt construct_urlRRtparse_querystringRt parse_qslR( tclstenvironR2R3R4R5t querystringR(R)R((s-/usr/lib/python2.6/site-packages/paste/url.pyt from_environKs     cOs"|i|ƒ}|i|ƒ}|S(N(t_add_positionalt _add_vars(R0targstkwtres((s-/usr/lib/python2.6/site-packages/paste/url.pyt__call__ascCsVd|jo9|iddƒ\}}|iht|ƒt|ƒ6ƒS|i|fƒS(Nt=i(tsplitR@t url_unquoteR?(R0titemtnameR%((s-/usr/lib/python2.6/site-packages/paste/url.pyt __getitem__fs !c KsˆxA|iƒD]3}|idƒo||||d <||=q q W|iiƒ}|i|ƒ|i|id|id|d|iƒS(Nt_iÿÿÿÿR)R*R-( tkeystendswithR*R,R/t __class__R(R)R.(R0RBR$t new_attrs((s-/usr/lib/python2.6/site-packages/paste/url.pytattrls  cKsD|iiƒ}|i|ƒ|i|id|id|id|ƒS(NR)R*R-(R.R,R/RNR(R)R*(R0RBt new_params((s-/usr/lib/python2.6/site-packages/paste/url.pytparamws   cCs©t}xa|iƒD]S\}}t|tƒo t}n|idƒo||||d <||=qqW|o4tdjoddklanti |ƒ}n|S(NRKiÿÿÿÿ(tvariabledecode( RtitemsRRRRMRSRt formencodetvariable_encode(R0R)tneed_variable_encodeR$R%((s-/usr/lib/python2.6/site-packages/paste/url.pyt coerce_vars~s   cKsJ|i|ƒ}|i|iƒ}|i|id|d|id|iƒS(NR)R*R-(RXR)RTRNR(R*R.(R0RBtnew_vars((s-/usr/lib/python2.6/site-packages/paste/url.pytvarŽs  c Ks‘|i|ƒ}g}x>|iD]3\}}||joqn|i||fƒqW|i|iƒƒ|i|id|d|id|iƒS(s® Like ``.var(...)``, except overwrites keys, where .var simply extends the keys. Setting a variable to None here will effectively delete it. R)R*R-( RXR)tappendtextendRTRNR(R*R.(R0RBRYRItvalues((s-/usr/lib/python2.6/site-packages/paste/url.pytsetvar•s   cKs.|i|id|iƒd|id|iƒS(sš Creates a copy of this URL, but with all the variables set/reset (like .setvar(), except clears past variables at the same time) R)R*R-(RNR(RTR*R.(R0RB((s-/usr/lib/python2.6/site-packages/paste/url.pytsetvars¦s c Gs…|}xx|D]p}t|ƒidƒ}|i}|idƒp|d7}n|i||d|id|id|iƒ}q W|S(NR'R)R*R-(RR R(RMRNR)R*R.(R0tpathstutpathtnew_url((s-/usr/lib/python2.6/site-packages/paste/url.pytaddpath¯s  cCs(||id|id|id|iƒS(NR)R*R-(R(R)R*R.(R0t OtherClass((s-/usr/lib/python2.6/site-packages/paste/url.pytbecome½s cCsÎ|i}|io·|d7}g}xŠ|iD]\}}t|ttfƒo6g}|D]}|dj o ||qZqZ~}n|djoq-n|i||fƒq-W|ti|t ƒ7}n|S(Nt?( R(R)RRttupleRR[R t urlencodeR(R0tsR)RItvalR#R((s-/usr/lib/python2.6/site-packages/paste/url.pyt href__getÂs    6 c Csæd|ii|ipdf}|io[|ddig}|iiƒD])\}}|dt|ƒt|ƒfqJ~ƒ7}n|ioO|ddig}|iiƒD]\}}|d||fq¯~ƒ7}n|d S( Ns<%s %ss''s attrs(%s)t s%s="%s"s params(%s)s, s%s=%rt>(RNt__name__threfR*RRTR R.(R0tbaseR#tnRt_[2]((s-/usr/lib/python2.6/site-packages/paste/url.pyt__repr__Òs   H  <cCsõ|iidƒptd|ƒ‚n|iƒ}d|iidƒ}dig}|iƒD])\}}|dt|ƒt|ƒfq`~ƒ}|o|d|7}n||iƒ7}|djo |dSd|||iidƒfSdS(Nttags<You cannot get the HTML of %r until you set the 'tag' param's<%sRms%s="%s"s />s %s>%s( R-tgetR"t _get_contentRt _html_attrsR t _html_extraR(R0tcontentRuR#RrRR*((s-/usr/lib/python2.6/site-packages/paste/url.pyt html__getßs ?  cCs |iiƒS(N(R*RT(R0((s-/usr/lib/python2.6/site-packages/paste/url.pyRxóscCsdS(NR((R0((s-/usr/lib/python2.6/site-packages/paste/url.pyRyöscCs t‚dS(sw Return the content for a tag (for self.html); return None for an empty tag (like ````) N(tNotImplementedError(R0((s-/usr/lib/python2.6/site-packages/paste/url.pyRwùscCs t‚dS(N(R|(R0R)((s-/usr/lib/python2.6/site-packages/paste/url.pyR@scCs t‚dS(N(R|(R0RA((s-/usr/lib/python2.6/site-packages/paste/url.pyR?sN(Rot __module__t__doc__R+RR1RR>t classmethodRDRJRPRRRXRZR^R_Rdt__div__RfRltpropertyRpRtR{thtmlRxRyRwR@R?(((s-/usr/lib/python2.6/site-packages/paste/url.pyR&8s:                  cBs‡eZdZhdd6Zd„Zd„Zd„Zd„Zd„Zd„Z e e ƒZ d „Z e e ƒZ d „Ze eƒZRS( s” >>> u = URL('http://localhost') >>> u >>> u = u['view'] >>> str(u) 'http://localhost/view' >>> u['//foo'].param(content='view').html 'view' >>> u.param(confirm='Really?', content='goto').html 'goto' >>> u(title='See "it"', content='goto').html 'goto' >>> u('another', var='fuggetaboutit', content='goto').html 'goto' >>> u.attr(content='goto').html Traceback (most recent call last): .... ValueError: You must give a content param to generate anchor tags >>> str(u['foo=bar%20stuff']) 'http://localhost/view?foo=bar+stuff' taRucCs|iS(N(Rp(R0((s-/usr/lib/python2.6/site-packages/paste/url.pyt__str__!scCs2|iidƒptd|ƒ‚n|idS(NRzs8You must give a content param to %r generate anchor tags(R-RvR"(R0((s-/usr/lib/python2.6/site-packages/paste/url.pyRw$s cCs€|}x>dD]6}||jo#|ih|i|ƒ|6}q q Wd|jo|id|idƒƒ}n|i|S(NtconfirmRzttarget(sconfirmscontent(RRtpopRPRZ(R0R)R(RI((s-/usr/lib/python2.6/site-packages/paste/url.pyR@+s ' cCs |i|ŒS(N(Rd(R0RA((s-/usr/lib/python2.6/site-packages/paste/url.pyR?4scCsg|iiƒ}|idd|ifƒ|iidƒo(|iddt|idƒfƒn|S(NiRpR…tonclicksreturn confirm(%s)(R*RTtinsertRpR-RvR[R(R0R*((s-/usr/lib/python2.6/site-packages/paste/url.pyRx7s  cCsdt|iƒS(Nslocation.href=%s; return false(RRp(R0((s-/usr/lib/python2.6/site-packages/paste/url.pytonclick_goto__get?scCs |itƒS(N(RftButton(R0((s-/usr/lib/python2.6/site-packages/paste/url.pyt button__getDscCs |itƒS(N(RftJSPopup(R0((s-/usr/lib/python2.6/site-packages/paste/url.pyt js_popup__getIs(RoR}R~R+R„RwR@R?RxRŠRt onclick_gotoRŒtbuttonRŽtjs_popup(((s-/usr/lib/python2.6/site-packages/paste/url.pyRs          cBsHeZdZhdd6Zd„Zd„Zd„Zd„Zd„ZRS(sÝ >>> i = Image('/images') >>> i = i / '/foo.png' >>> i.html '' >>> str(i['alt=foo']) 'foo' >>> i.href '/images/foo.png' timgRucCs|iS(N(R‚(R0((s-/usr/lib/python2.6/site-packages/paste/url.pyR„]scCsdS(N(R(R0((s-/usr/lib/python2.6/site-packages/paste/url.pyRw`scCs |i|S(N(RP(R0R)((s-/usr/lib/python2.6/site-packages/paste/url.pyR@cscCs |i|ŒS(N(Rd(R0RA((s-/usr/lib/python2.6/site-packages/paste/url.pyR?fscCs,|iiƒ}|idd|ifƒ|S(Nitsrc(R*RTR‰Rp(R0R*((s-/usr/lib/python2.6/site-packages/paste/url.pyRxis( RoR}R~R+R„RwR@R?Rx(((s-/usr/lib/python2.6/site-packages/paste/url.pyRNs      R‹cBsHeZdZhdd6Zd„Zd„Zd„Zd„Zd„ZRS(sé >>> u = URL('/') >>> u = u / 'delete' >>> b = u.button['confirm=Sure?'](id=5, content='del') >>> str(b) '' RRucCs|iS(N(R‚(R0((s-/usr/lib/python2.6/site-packages/paste/url.pyR„zscCsB|iidƒo |idS|iidƒo |idSdS(NRzR%(R-RvR*R(R0((s-/usr/lib/python2.6/site-packages/paste/url.pyRw}s   cCsk|}d|jo|id|idƒƒ}nd|jo|id|idƒƒ}n|i|S(NR…Rz(RRR‡RZ(R0R)R((s-/usr/lib/python2.6/site-packages/paste/url.pyR@…s   cCs |i|ŒS(N(Rd(R0RA((s-/usr/lib/python2.6/site-packages/paste/url.pyR?scCsz|iiƒ}dt|iƒ}|iidƒo!dt|idƒ|f}n|d7}|idd|fƒ|S(Nslocation.href=%sR…sif (confirm(%s)) {%s}s; return falseiRˆ(R*RTRRpR-RvR‰(R0R*Rˆ((s-/usr/lib/python2.6/site-packages/paste/url.pyRxs ( RoR}R~R+R„RwR@R?Rx(((s-/usr/lib/python2.6/site-packages/paste/url.pyR‹ns     RcBsOeZdZhdd6dd6Zd„Zd„Zd„Zd„Zd „ZRS( sÑ >>> u = URL('/') >>> u = u / 'view' >>> j = u.js_popup(content='view') >>> j.html 'view' RƒRut_blankR†cCsT|}x>dD]6}||jo#|ih|i|ƒ|6}q q W|i|S(NtwidththeighttstrippedRz(R•R–R—scontent(RRR‡RZ(R0R)RRZ((s-/usr/lib/python2.6/site-packages/paste/url.pyR@¦s  'cCs>|i}g}|idƒod|d<|d<|ds"       ÎH ,>