]>
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
)
64 # Suppress the annoying warning we get with Twisted 1.3 words being deprecated
65 warnings
.filters
.append(("ignore", None, UserWarning, re
.compile("twisted.words"), 21))
66 # Suppress the OpenSSL UserWarning
67 warnings
.filters
.append(("ignore", re
.compile("SSL connection shutdown possibly unreliable, please upgrade to ver 0.XX"), UserWarning, re
.compile("twisted.internet.tcp"), 216))
71 log
.msg("Trying to import XML DOM")
72 from twisted
.words
.xish
.domish
import SuxElementStream
, Element
, unescapeFromXml
73 from twisted
.words
.protocols
.jabber
import jid
, component
74 jid
.intern = jid
.internJID
# This got renamed for some reason
75 log
.msg("Using Twisted >= 2.0, Words >= 0.3, Words DOM")
78 log
.msg("Checking Twisted version...")
80 from twisted
.xish
.domish
import SuxElementStream
, Element
, unescapeFromXml
81 from twisted
.words
.protocols
.jabber
import jid
, component
82 jid
.intern = jid
.internJID
# This got renamed for some reason
83 log
.msg("Using Twisted >= 2.0, Words < 0.3, Twisted DOM")
85 from tlib
.domish
import SuxElementStream
, Element
, unescapeFromXml
86 from tlib
.jabber
import jid
, component
87 log
.msg("Using Twisted < 2.0, Internal patched DOM")
89 print "Could not find the XML DOM. If you're using Twisted 2.x make sure you have twisted.words installed."
94 """ Taken from http://xoomer.virgilio.it/dialtone/rsschannel.py """
96 def __init__(self
, beExtremelyLenient
=False):
98 self
.beExtremelyLenient
= beExtremelyLenient
100 def parseFile(self
, filename
):
101 return self
.parseString(file(filename
).read())
103 def parseString(self
, data
):
104 es
= SuxElementStream()
105 es
.beExtremelyLenient
= self
.beExtremelyLenient
106 es
.DocumentStartEvent
= self
.docStart
107 es
.DocumentEndEvent
= self
.docEnd
108 es
.ElementEvent
= self
.element
112 def docStart(self
, e
):
118 def element(self
, e
):
119 self
.root
.addChild(e
)