;ò øÃ•Gc@sãdZdZdkZdkZdkZdklZlZyee e fWn(e j odZdZ d„Z nXei dƒZ dZd Zei d ƒZd „Zd fd „ƒYZdZdefd„ƒYZdfd„ƒYZhdd<dd<dd<dd<dd<dd<dd <d!d"<d#d$<d%d&<d'd(<d)d*<d+d,<d-d.<d/d0<d1d2<d3d4<d5d6<d7d8N(s StringTypes UnicodeTypeiicCs | SdS(N(sx(sx((s4/mnt/gmirror/ports/www/py-meld/work/PyMeld/PyMeld.pysboolòss (?ix) # Case-insensitive, verbose <(?P[-a-z0-9_:.]+) # Tag opens; capture its name (?:\s+[-a-z0-9_:.]+=(?P["']).*?(?P=quote1))* # Attributes \s*/?> # Tag closes s«(?ix) # Case-insensitive, verbose <(?P[-a-z0-9_:.]+) # Tag opens; capture its name (?:\s+[-a-z0-9_:.]+=(?P["']).*?(?P=quote1))* # Attributes before id \s+id=(?P["'])(?P%s)(?P=quote2) # The 'id' tag (?:\s+[-a-z0-9_:.]+=(?P["']).*?(?P=quote3))* # Attributes after id \s*/?> # Tag closes sS(?ix) (?P\s+) (?P%s)=(?P["'])(?P.*?)(?P=quote) s.(?i)\s+id=(?P["'])(?P.*?)(?P=quote)cCs€t|}d}ti||ƒ}|}xM|oE|}|i ƒdd}ti|d||||i ƒ!ƒ}q+W|SdS(Niis.( s openIDTagREsidsthisREsstartsressearchstextsmatchs prevMatchsspansend(sidstextsthisREs prevMatchsstartsmatch((s4/mnt/gmirror/ports/www/py-meld/work/PyMeld/PyMeld.pys _findIDMatch s ,s _MarkupHoldercBstZd„Zd„ZRS(NcCsd|_||_dS(Ni(sselfscountss(sselfss((s4/mnt/gmirror/ports/www/py-meld/work/PyMeld/PyMeld.pys__init__$s cCs6||i|<|djo|id|id|\s)s (?i)(sselfs _lastUpdates_markupscounts_namesNonesressearchs openTagREsssmatchs ValueErrorsgroups_tagNamesstarts _openStartsends_openEnds _findIDMatchsrestsdepthsposs openMatchs closeMatchs _closeStarts _closeEndsspan(sselfsstarts openMatchsrestspossdepths closeMatchsmatch((s4/mnt/gmirror/ports/www/py-meld/work/PyMeld/PyMeld.pys_updatePositionscs\    !   cCsŒ|iƒ|itjo#|i}|ii||i!}n |i }|ii||i !}t ||ƒ}|o||iƒSntSdS(N(sselfs_updatePositionss_namesNones _openStartsstarts_markupsss _closeEndssubsets_openEnds _closeStarts _findIDMatchsnodeIDsmatch(sselfsnodeIDssubsetsstartsmatch((s4/mnt/gmirror/ports/www/py-meld/work/PyMeld/PyMeld.pys_findElementFromID®s   cCsM|iddƒ}|iddƒiddƒ}tidd|ƒ}|SdS( Ns"s"ss>s&(?![a-zA-Z0-9]+;)s&(svaluesreplacesressub(sselfsvalue((s4/mnt/gmirror/ports/www/py-meld/work/PyMeld/PyMeld.pys_quoteAttributeÂs cCs>|iddƒiddƒ}|iddƒiddƒSdS( Ns"s"s&s&s<s(svaluesreplace(sselfsvalue((s4/mnt/gmirror/ports/www/py-meld/work/PyMeld/PyMeld.pys_unquoteAttributeÊscCs3|djo%|iƒ|ii|i|i!SnD|ddjo2y|i|SWqutj ot |‚quXn|i ot i |ddƒ}n|iƒ|i |ƒ}|tj o|i||ƒSn|ii|i|i!}tit||ƒ}|o|i|idƒƒSnt d|‚dS(Ns_contentis_s-svalues No element or attribute named %r(snamesselfs_updatePositionss_markupsss_openEnds _closeStarts__dict__sKeyErrorsAttributeErrors_dashessstringsreplaces_findElementFromIDsstartsNones _makeChilds _openStartsopenTagsressearchs attributeREsmatchs_unquoteAttributesgroup(sselfsnamesstartsopenTagsmatch((s4/mnt/gmirror/ports/www/py-meld/work/PyMeld/PyMeld.pys __getattr__Ïs(     cCs¿|ddjo |djo||i|>> page = Meld('''• This "and that"... ... x''') >>> print page.s.title "Quoted" & Not >>> page.s.title = page.s.title # Accept liberally, produce strictly. >>> print page • This "and that"... x >>> page.s.title = page.s.title + " <>" >>> print page.s.title "Quoted" & Not <> >>> print page.s x sassigning to _contentsÏ >>> page = Meld('''Old''') >>> page.s._content = "New" >>> print page New >>> page._content = "All new" >>> print page All new sdeleting _contents† >>> page = Meld('''Old''') >>> del page.s._content >>> print page s!constructing from an unknown typesm >>> page = Meld(1) Traceback (most recent call last): ... TypeError: Melds must be constructed from strings s"accessing a non-existent attributes; >>> page = Meld('') >>> print page.spam Traceback (most recent call last): ... AttributeError: No element or attribute named 'spam' >>> del page.spam Traceback (most recent call last): ... AttributeError: No element or attribute named 'spam' >>> print page.body.spam # For non-container Melds Traceback (most recent call last): ... AttributeError: No element or attribute named 'spam' >>> del page.body.spam # For non-container Melds Traceback (most recent call last): ... AttributeError: No element or attribute named 'spam' sadd new thingssÒ >>> page = Meld('''''') >>> page.empty = "Not any more" >>> page.empty.cols = 60 >>> print page sreadonlys3 >>> page = Meld('''No!''', readonly=True) >>> page.no = "Yes?" Traceback (most recent call last): ... ReadOnlyError: You can't modify this read-only Meld object >>> page.no.attribute = "Yes?" Traceback (most recent call last): ... ReadOnlyError: You can't modify this read-only Meld object >>> page.no += "More?" Traceback (most recent call last): ... ReadOnlyError: You can't modify this read-only Meld object >>> del page.no Traceback (most recent call last): ... ReadOnlyError: You can't modify this read-only Meld object scopy from one to anothersB >>> a = Meld('One') >>> b = Meld('Two') >>> a.one = b.two >>> print a Two >>> b.two = "New" >>> print a # Checking for side-effects Two smixed-type add, radd and iaddså >>> a = Meld('1') >>> print a.one + "x" 1x >>> print "x" + a.one x1 >>> a.one += "y" >>> print a 1y saccess top-level elementsE >>> d = Meld("spam") >>> print d.x spam s$access nested element with same names¸ >>> d = Meld("spam") >>> print d.x.x spam >>> d = Meld("spam") >>> print d.x.x spam sunicodesO >>> u = Meld(u'One') >>> a = Meld('Two') >>> u.one = a.two >>> print repr(unicode(u)) u'Two' >>> a.two = Meld(u'') >>> print a sprivate attributessi >>> page = Meld('x') >>> page._private = "Spam" >>> print repr(page._private) 'Spam' >>> print page x >>> del page._private >>> print repr(page._private) Traceback (most recent call last): ... AttributeError: _private >>> del page._private Traceback (most recent call last): ... AttributeError: _private >>> print page x s no markups‘ >>> page = Meld("Hello world") >>> print page.spam Traceback (most recent call last): ... ValueError: This isn't any form of markup I recognize snestings¹ >>> page = Meld(''' ... Hello ... World ... and friends ... ! ... Goodbye ... ... ''') >>> print page.all Hello World and friends ! Goodbye >>> print page.extra and friends sre-bugs– >>> page = Meld("") >>> print page.x # Was "" s underscoressÝ >>> html = '
xxx
' >>> meld = Meld(html, replaceUnderscoreWithDash=True) >>> print meld % {'header_box': 'Mod'}
Mod
>>> print meld.toFormatString(useDict=True)
%(header_box)s
>>> meld.header_box = 'yyy' >>> meld.header_box.dash_attr = '___' >>> print meld
yyy
sdoctypesÜ >>> html = '\nz' >>> meld = Meld(html) >>> meld.a = 'a' >>> meld.y = 'b' >>> print meld b s eichin-bugs5 >>> page = Meld(''' ...
label Running
''') >>> print page.Instance_1_4 Running cCs„dk}ydkl}|idƒWntj o t}nXdk}|i|ƒ}|o|i ƒ}|i ƒn|SdS(N(sCoveragesPyMeld( sdoctestsEntriansCoveragesstarts ImportErrorsFalsesPyMeldstestmodsresults getAnalysissanalysiss printAnalysis(sPyMeldsanalysissdoctestsCoveragesresult((s4/mnt/gmirror/ports/www/py-meld/work/PyMeld/PyMeld.pystest]s     s__main__sAll %d tests passed.(s __version__s __author__ssyssstringsrestypess StringTypes UnicodeTypesTruesFalsesbools NameErrorscompiles openTagREs openIDTagREs attributeREsidREs _findIDMatchs _MarkupHoldersREAD_ONLY_MESSAGEs Exceptions ReadOnlyErrorsMelds__test__stests__name__sfailedstotal(stotalsMelds StringTypes openTagREsfailedsresbools attributeREs __version__sTrues openIDTagREsstringsREAD_ONLY_MESSAGEs __author__ssysstests__test__s _MarkupHolders _findIDMatchsFalsesidREs UnicodeTypes ReadOnlyError((s4/mnt/gmirror/ports/www/py-meld/work/PyMeld/PyMeld.pys?ãs6  ÿÿB±é !