]>
code.delx.au - pymsnt/blob - src/tlib/xmlw.py
ea96e9b5c033476a820577596df5510ac8ea5f2b
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.__init__"), 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
)