]>
code.delx.au - pymsnt/blob - src/tlib/xmlw.py
1 # Copyright 2004-2005 James Bunton <james@delx.cjb.net>
2 # Licensed for distribution under the GPL version 2, check COPYING for details
4 from twisted
.python
import log
6 checkTwistedCached
= None
8 """ Returns False if we're using an old version that needs tlib, otherwise returns True """
9 global checkTwistedCached
10 if checkTwistedCached
== None:
11 import twisted
.copyright
12 checkTwistedCached
= (VersionNumber(twisted
.copyright
.version
) >= VersionNumber("2.0.0"))
13 return checkTwistedCached
16 def __init__(self
, vstring
):
25 elif c
.isdigit() and flag
:
26 self
.varray
[index
] *= 10
27 self
.varray
[index
] += int(c
)
31 def __cmp__(self
, other
):
34 if i
== len(other
.varray
):
35 if i
< len(self
.varray
):
39 if i
== len(self
.varray
):
40 if i
< len(other
.varray
):
45 if self
.varray
[i
] > other
.varray
[i
]:
47 elif self
.varray
[i
] < other
.varray
[i
]:
54 def parseText(text
, beExtremelyLenient
=False):
55 return TextParser(beExtremelyLenient
).parseString(text
)
57 def parseFile(filename
, beExtremelyLenient
=False):
58 t
= TextParser(beExtremelyLenient
)
63 # Suppress the annoying warning we get with Twisted 1.3
65 warnings
.filters
.append(("ignore", None, UserWarning, re
.compile("twisted.words"), 21))
68 log
.msg("Trying to import XML DOM")
69 from twisted
.words
.xish
.domish
import SuxElementStream
, Element
, unescapeFromXml
70 from twisted
.words
.protocols
.jabber
import jid
, component
71 jid
.intern = jid
.internJID
# This got renamed for some reason
72 log
.msg("Using Twisted >= 2.0, Words >= 0.3, Words DOM")
75 log
.msg("Checking Twisted version...")
77 from twisted
.xish
.domish
import SuxElementStream
, Element
, unescapeFromXml
78 from twisted
.words
.protocols
.jabber
import jid
, component
79 jid
.intern = jid
.internJID
# This got renamed for some reason
80 log
.msg("Using Twisted >= 2.0, Words < 0.3, Twisted DOM")
82 from tlib
.domish
import SuxElementStream
, Element
, unescapeFromXml
83 from tlib
.jabber
import jid
, component
84 log
.msg("Using Twisted < 2.0, Internal patched DOM")
86 print "Could not find the XML DOM. If you're using Twisted 2.x make sure you have twisted.words installed."
91 """ Taken from http://xoomer.virgilio.it/dialtone/rsschannel.py """
93 def __init__(self
, beExtremelyLenient
=False):
95 self
.beExtremelyLenient
= beExtremelyLenient
97 def parseFile(self
, filename
):
98 return self
.parseString(file(filename
).read())
100 def parseString(self
, data
):
101 es
= SuxElementStream()
102 es
.beExtremelyLenient
= self
.beExtremelyLenient
103 es
.DocumentStartEvent
= self
.docStart
104 es
.DocumentEndEvent
= self
.docEnd
105 es
.ElementEvent
= self
.element
109 def docStart(self
, e
):
115 def element(self
, e
):
116 self
.root
.addChild(e
)