mς |ͺIc@sXdZdZdZdZdklZdkTdeee e e e efd„ƒYZ dS( s=$Id: link.py 1039 2009-02-04 12:37:17Z nslater@tumbolia.org $sOSam Ruby and Mark Pilgrim s$Revision: 1039 $s,Copyright (c) 2002 Sam Ruby and Mark Pilgrim(s validatorBase(t*tlinkcBs†tZddddddddd d d d d ddddddgZdddd d d d gZd„Zd„Zd„Zd„ZRS(Nt alternatetcurrentt enclosuretedits edit-mediatfirsttlasttlicensetnexts next-archivetpayments prev-archivetprevioustrelatedtrepliestselftservicetuptviac Cs%d ddddddddddg S(Nutypeutitleureluhrefulengthuhreflangu+http://www.w3.org/1999/02/22-rdf-syntax-ns#uresourceu&http://purl.org/syndication/thread/1.0ucountuwhenuupdated(Nutype(Nutitle(Nurel(Nuhref(Nulength(Nuhreflang(u+http://www.w3.org/1999/02/22-rdf-syntax-ns#utype(u+http://www.w3.org/1999/02/22-rdf-syntax-ns#uresource(u&http://purl.org/syndication/thread/1.0ucount(u&http://purl.org/syndication/thread/1.0uwhen(u&http://purl.org/syndication/thread/1.0uupdated(tNone(R((t=/web/script/rubys/feedvalidator.org/src/feedvalidator/link.pytgetExpectedAttrNames/sc Cs d|_d|_d|_d|_d|_|iid-ƒo»|ii d.ƒ|_ |_|ii dƒo|it dƒ|_n|i|i joG|ithd|ii<d|i<dd<d|i<ƒƒnͺtii|iid ƒƒoG|ithd|ii<d|i<dd<d|i<ƒƒnD|ithd|ii<d|i<dd<d|i<ƒƒti|d td hdd<ƒ|i|ijo6|iid jo#|ithd|i<ƒƒqϋn|iid/ƒo-|ii d0ƒ|_ |_ti|iƒpG|ithd|ii<d|i<dd <d|i<ƒƒq;|idjo`|idddgjoG|ithd|ii<d|i<dd <d|i<ƒƒq;|ithd|ii<d|i<dd <d|i<ƒƒn|iid1ƒo†|it hd|ii<d|i<dd<ƒƒ|ii d2ƒ|_ |_ti|d td hdd<ƒt!i|ƒn|iid3ƒo<d|_|ii d4ƒ|_ t"i|ƒti|ƒn|iid5ƒo6d|_|ii d6ƒ|_ |_t#i|ƒn|iid7ƒoηd|_|ii d8ƒ|_ |_t$i|d hdd<ƒ|idjo’|iiddgjoydk%l%}dk&l'}||iƒd}|}xv| om|oft*|dƒoV|i}|o9|i|dfƒo#||i |dfƒƒd}n|i}qW|p#|it,hd|i<ƒƒndk%l-}||i.|i ƒ|i/i0jop||i.|i ƒi1dƒd|i.i1dƒdjo3d k2l3}|i i d!ƒo4|i i4d"ƒo|i i1d#ƒd|_ q{n||i ƒ} xΝ|i/i0D]k}| ||ƒjoPn|i d!ƒo=|i4d"ƒo)| ||i1d#ƒdƒjoPqώqq—q—W|it6hd|ii<d|i<ƒƒ|i/i0i7||i.|i ƒƒq^qbqn8|it8hd|ii<d|i<dd<ƒƒ|iid9ƒoz|id&jo;|it9hd|ii<d|i<d'd(<ƒƒn|ii d:ƒ|_ d(|_t"i|ƒn|iid;ƒo;|it:hd|ii<d|i<d'd*<ƒƒn|iid<ƒoz|id&jo;|it9hd|ii<d|i<d'd,<ƒƒn|ii d=ƒ|_ d,|_t;i|ƒndS(>NtRtrels)http://www.iana.org/assignments/relation/tparenttelementtattrtvaluetidnat errorClasst extraParamstentryttypeRsapplication/atom+xmlsapplication/rss+xmlsapplication/rdf+xmlttitletlengththreflangthreftfeedtchannel(surlparse(s XML_NAMESPACEitattrsubase(surljoint#i(sUrishttp://feeds.feedburner.com/s ?format=xmlt?u&http://purl.org/syndication/thread/1.0ucountR t attributes thr:countuwhensthr:whenuupdateds thr:updated(Nsrel(Nsrel(Nstype(Nstype(Nstitle(Nstitle(Nslength(Nslength(Nshreflang(Nshreflang(Nshref(Nshref(u&http://purl.org/syndication/thread/1.0ucount(u&http://purl.org/syndication/thread/1.0ucount(u&http://purl.org/syndication/thread/1.0uwhen(u&http://purl.org/syndication/thread/1.0uupdated(u&http://purl.org/syndication/thread/1.0uupdated(<RRRR#R"R R&thas_keyRtgetValueRt startswithtlentvalidRelationstlogtValidAtomLinkRelRtnamet rfc2396_fullt rfc2396_retmatchtencodetUnregisteredAtomLinkReltnonblanktvalidatet AttrNotBlanktrfc5005tFeedHistoryRelInEntrytmime_retInvalidMIMETypet SelfNotAtomtValidMIMEAttributet ValidTitletnonhtmltnonNegativeIntegertiso639txmlbaseturlparsetxml.domt XML_NAMESPACEtabsoluteRthasattrtpattrst RelativeSelfturljointxmlBaset dispatchertselfURIstsplitturitUritendswithtdocbasetSelfDoesntMatchLocationtappendt MissingHreftUnexpectedAttributet NoThrWhentrfc3339( RRRHRLRRRERGRTRJR((RR88s°     GGC"&'G)GG7"    )   ## "9 !  .27; ;; cCs|itƒ||ƒdS(N(RtpushteaterR1R&(RR1tqnameR&((RtstartElementNS₯scCsC|iƒo2|ithd|ii<d|i<ƒƒndS(NRR(ttexttstripRR/tAtomLinkNotEmptyRR1(RR_((Rt characters¨s (t__name__t __module__R.R:RR8R^Rb(((RR s ? m N(t__doc__t __author__t __version__t __copyright__tbaset validatorBaset validatorsR7RDRCRARBRZR(RhRfRRgRj((RR(s