~Dc @sdZddgZdgZdZdZdZdZddgZd d kZd d k Z y<d d k Z eod d k Z d e i _nd Z Wnd Z d Z nXdeifdYZdefdYZddZhdd<dd<dd<dd<dds&Aaron Swartz s#Sam Ruby tBSDs0.25ituTidytmxTidyiNicCsti|dS(tencoding(tchardettdetect(tdata((s6/home/mrben/misterben.org.uk/planet/planet/sanitize.pyt scCsdS(N(tNone(R((s6/home/mrben/misterben.org.uk/planet/planet/sanitize.pyR#st_BaseHTMLProcessorc BseZdddddddddd d d d g Zeid eiZeidZeidZdZ dZ dZ dZ dZ dZdZdZdZdZdZdZdZeidiZdZdZRS( tareatbasetbasefonttbrtcoltframethrtimgtinputtisindextlinktmetatparamscCs?||_totiid|intii|dS(Ns(entering BaseHTMLProcessor, encoding=%s (Rt_debugtsyststderrtwritetsgmllibt SGMLParsert__init__(tselfR((s6/home/mrben/misterben.org.uk/planet/planet/sanitize.pyR-s cCsg|_tii|dS(N(tpiecesRRtreset(R((s6/home/mrben/misterben.org.uk/planet/planet/sanitize.pyR 2s cCsG|id}||ijod|dSnd|d|dSdS(Nits>(tgrouptelements_no_end_tag(Rtmatchttag((s6/home/mrben/misterben.org.uk/planet/planet/sanitize.pyt_shorttag_replace6scCs|iid|}|iid|}|ii|i|}|io/t|tdjo|i|i}nti i ||dS(Ns<!\1s&u( t _r_barebangtsubt _r_bareampt _r_shorttagR'RttypetencodeRRtfeed(RR((s6/home/mrben/misterben.org.uk/planet/planet/sanitize.pyR.=s #c Cs~g}|D]\}}||i|fq ~}g}|D]3\}}|||djo |ip|fq>~}|S(NtrelR,(srelstype(tlower(Rtattrst_[1]tktvt_[2]((s6/home/mrben/misterben.org.uk/planet/planet/sanitize.pytnormalize_attrsEs3Gc Cstotiid|ng}xb|D]Z\}}t|tdjot||i}n|it||i|fq,Wdig}|D]\}}|d||fq~i |i}||i jo|i idt n|i idt dS(Ns-_BaseHTMLProcessor, unknown_starttag, tag=%s uu %s="%s"s<%(tag)s%(strattrs)s />s<%(tag)s%(strattrs)s>( RRRRR,tunicodeRtappendtjoinR-R$Rtlocals(RR&R1tuattrstkeytvalueR2tstrattrs((s6/home/mrben/misterben.org.uk/planet/planet/sanitize.pytunknown_starttagKs #FcCs/||ijo|iidtndS(Ns (R$RR8R:(RR&((s6/home/mrben/misterben.org.uk/planet/planet/sanitize.pytunknown_endtag\scCs|iidtdS(Ns &#%(ref)s;(RR8R:(Rtref((s6/home/mrben/misterben.org.uk/planet/planet/sanitize.pythandle_charrefbscCs|iidtdS(Ns &%(ref)s;(RR8R:(RRA((s6/home/mrben/misterben.org.uk/planet/planet/sanitize.pythandle_entityrefgscCs3totiid|n|ii|dS(Ns)_BaseHTMLProcessor, handle_text, text=%s (RRRRRR8(Rttext((s6/home/mrben/misterben.org.uk/planet/planet/sanitize.pyt handle_datalscCs|iidtdS(Ns(RR8R:(RRD((s6/home/mrben/misterben.org.uk/planet/planet/sanitize.pythandle_commentsscCs|iidtdS(Ns (RR8R:(RRD((s6/home/mrben/misterben.org.uk/planet/planet/sanitize.pyt handle_pixscCs|iidtdS(Ns (RR8R:(RRD((s6/home/mrben/misterben.org.uk/planet/planet/sanitize.pyt handle_decl}ss-zA-Z][-_.a-zA-Z0-9:]*\s*cCs|i}t|}||jodSn|i||}|oQ|i}|i}|t||jodSn|i|ifSn|i|dSdS(Ni(Ni(Ni(Ni( trawdatatlenRt_new_declname_matchR#tstripR0tendRE(Rtit declstartposRItntmtstname((s6/home/mrben/misterben.org.uk/planet/planet/sanitize.pyt _scan_names      cCs1dig}|iD]}|t|q~S(s(Return processed HTML as a single stringt(R9Rtstr(RR2tp((s6/home/mrben/misterben.org.uk/planet/planet/sanitize.pytoutputs(t__name__t __module__R$tretcompilet IGNORECASER(R*R+RR R'R.R6R?R@RBRCRERFRGRHR%RKRTRX(((s6/home/mrben/misterben.org.uk/planet/planet/sanitize.pyR %s*              t_HTMLSanitizercGBs eZdddddddddd d d d d ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFgGZddGdHdIdJdKdLdMdNdOdPdQdRdSdTd dUdVdWdXdYdZd[d\dd]d^d_d`dadbdcdddedfdgd'dhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d6d}d~ddddddddddgGZdddgZdZdZdZdZdZ dZ dZ RS(tatabbrtacronymtaddressR tbtbigt blockquoteR tbuttontcaptiontcentertcitetcodeRtcolgrouptddtdeltdfntdirtdivtdltdttemtfieldsettfonttformth1th2th3th4th5th6RRNRRtinstkbdtlabeltlegendtlitmaptmenutoltoptgrouptoptionRWtpretqRRtsamptselecttsmalltspantstriketstrongR)tsupttablettextareattbodyttdttfoottthttheadttrttttutultvartacceptsaccept-charsett accesskeytactiontaligntalttaxistbordert cellpaddingt cellspacingtchartcharofftcharsettcheckedtclasstcleartcolstcolspantcolortcompacttcoordstdatetimetdisabledtenctypetforRtheaderstheightthrefthreflangthspacetidtismaptlangtlongdesct maxlengthtmediatmethodtmultipleRStnohreftnoshadetnowraptprompttreadonlyR/trevtrowstrowspantrulestscopetselectedtshapetsizetsrctstarttsummaryttabindexttargetttitleR,tusemaptvalignR=tvspacetwidthtscripttapplettstylecCs#ti|g|_d|_dS(Ni(R R t tag_stackt ignore_level(R((s6/home/mrben/misterben.org.uk/planet/planet/sanitize.pyR s  cCs?ti||x(|ioti||iiqWdS(N(R R.RR@tpop(RR((s6/home/mrben/misterben.org.uk/planet/planet/sanitize.pyR.s cCs||ijo|id7_dSn|iodSn||ijo|i|}g}|D]-\}}||ijo|||fqcqc~}||ijo|ii|nti |||ndS(Ni( tignorable_elementsRtacceptable_elementsR6tacceptable_attributesR$RR8R R?(RR&R1R2R<R=((s6/home/mrben/misterben.org.uk/planet/planet/sanitize.pyR?s AcCs||ijo|id8_dSn|iodSn||ijo~||ijont}xF|io;|ii}||jo t}Pnti ||qbW|oti ||qndS(Ni( RRRR$tFalseRRtTrueR R@(RR&R%ttop((s6/home/mrben/misterben.org.uk/planet/planet/sanitize.pyR@s     cCsdS(N((RRD((s6/home/mrben/misterben.org.uk/planet/planet/sanitize.pyRGscCsdS(N((RRD((s6/home/mrben/misterben.org.uk/planet/planet/sanitize.pyRHscCs4|ip&|idd}ti||ndS(NR!RU(RtreplaceR RE(RRD((s6/home/mrben/misterben.org.uk/planet/planet/sanitize.pyREs ( RYRZRRRR R.R?R@RGRHRE(((s6/home/mrben/misterben.org.uk/planet/planet/sanitize.pyR^s4$       tutf8c st|}|i||i}tod}x~tD]v}yf|djo$ddklfd}Pn2|djo$ddkl fd}PnWq9q9Xq9W|ot |t dj}|o|i d }n||d d d d d ddd}|ot |d }n|i doD|idd d }|i do|idd d }q~n|i do|idd d}qqn|iidd}|S(NRi(t parseStringcst||S(N(RV(Rtkwargs(t_utidy(s6/home/mrben/misterben.org.uk/planet/planet/sanitize.pyt_tidysR(tTidycs"i||\}}}}|S(N(ttidy(RRtnerrorst nwarningst errordata(t_mxtidy(s6/home/mrben/misterben.org.uk/planet/planet/sanitize.pyRsusutf-8t output_xhtmlitnumeric_entitiestwrapit char_encodingRsi?iiiiiiiiii`i:i#i@i'i=i"iiaibicidieifigihiiiiiiiiiijikiliminioipiqiriiiiiiii~isitiuiviwixiyiziiiiiiiiiiiiiiiiiiiiiii{iAiBiCiDiEiFiGiHiIiiiiiii}iJiKiLiMiNiOiPiQiRiiiiiii\iiSiTiUiViWiXiYiZiiiiiii0i1i2i3i4i5i6i7i8i9iiiiiiiRUi(iiiiii iiiiii i i iiiiiiiiiiiiiiiiiiiiiiii iiiiiiiiiiiiiiiiiiiiiiiiiii iiiiiiiiii[i.i<i(i+i!i&iiiiiiiiii]i$i*i)i;i^i-i/iiiiiiiii|i,i%i_i>i?iiiiiiiiii`i:i#i@i'i=i"iiaibicidieifigihiiiiiiiiiijikiliminioipiqiriiiiiiii~isitiuiviwixiyiziiiiiiiiiiiiiiiiiiiiiii{iAiBiCiDiEiFiGiHiIiiiiiii}iJiKiLiMiNiOiPiQiRiiiiiii\iiSiTiUiViWiXiYiZiiiiiii0i1i2i3i4i5i6i7i8i9iiiiii(t_ebcdic_to_ascii_maptstringt maketransR9Rtchrtranget translate(RRtemapR((s6/home/mrben/misterben.org.uk/planet/planet/sanitize.pyt_ebcdic_to_ascii!s* :cCsdx]t|D]O\}}|djo||djotSq\q |||jotSq q WtS(Nt#t(t enumerateRR(RDtbomRNtc((s6/home/mrben/misterben.org.uk/planet/planet/sanitize.pyt_startswithbom;s    cCs9x2|iD]$\}}t||o|Sq q WdS(N(t iteritemsR R(RDtbom_mapR R((s6/home/mrben/misterben.org.uk/planet/planet/sanitize.pyt _detectbomEs   csgfd}||pg|tpT|o|ttp7|tp$|dp|dp |dS(sd Takes a string text of unknown encoding and tries to provide a Unicode string for it. csk|o`|joS|djotSnyt|SWntj onXi|ndS(NR(RR7tUnicodeDecodeErrorR8(R(RDt_triedEncodings(s6/home/mrben/misterben.org.uk/planet/planet/sanitize.pyt tryEncodingQs Rs windows-1252s iso-8859-1(Rt xml_bom_mapt_chardet(RDtisXMLtguessR((RDRs6/home/mrben/misterben.org.uk/planet/planet/sanitize.pyt charactersKs   (t__doc__t __author__t__contributors__t __license__t __version__RRRRR[Rtchardet.constantst constantsRRRR R^Rtunicode_bom_mapRRRR RRR(((s6/home/mrben/misterben.org.uk/planet/planet/sanitize.pyssN       uO '