summaryrefslogtreecommitdiff
path: root/toolkit/src2xml/source/globals.py
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/src2xml/source/globals.py')
-rw-r--r--toolkit/src2xml/source/globals.py115
1 files changed, 115 insertions, 0 deletions
diff --git a/toolkit/src2xml/source/globals.py b/toolkit/src2xml/source/globals.py
new file mode 100644
index 000000000000..5e170b8c2a6e
--- /dev/null
+++ b/toolkit/src2xml/source/globals.py
@@ -0,0 +1,115 @@
+import sys
+
+class ParseError (Exception):
+ pass
+
+def error (msg, exit=0):
+ sys.stderr.write (msg)
+ if exit:
+ sys.exit (exit)
+
+def progress (msg):
+ sys.stderr.write(msg)
+
+
+def removeQuote (text):
+ """Remove quotes from a literal.
+"""
+ if len(text) >= 2 and text[0] == text[len(text)-1] == '"':
+ text = text[1:-1]
+ return text
+
+
+class Macro(object):
+ def __init__ (self, name):
+ self.name = name
+ self.tokens = []
+ self.vars = {}
+
+
+class Node(object):
+ def __init__ (self):
+ self.children = []
+
+ def appendChild (self, childnode):
+ self.children.append(childnode)
+ childnode.parent = self
+
+ def getChildren (self):
+ return self.children
+
+
+class RootNode(Node):
+ def __init__ (self):
+ Node.__init__(self)
+
+ def dump (self):
+ chars = ''
+ for child in self.getChildren():
+ chars += child.dump()
+ return chars
+
+
+class Element(Node):
+
+ INDENT = " "
+
+ def __init__ (self, name, rid = None):
+ Node.__init__(self)
+ self.name = name
+ self.parent = None
+# print "name: " + self.name - stats ...
+
+ # The following attributes are copied when 'clone'ed.
+ self.rid = rid
+ self.attrs = {}
+
+ def dump (self, level = 0):
+ chars = ''
+ chars += "\n" + Element.INDENT*level
+ chars += '<%s'%self.name
+
+ if self.rid != None:
+ self.setAttr("rid", self.rid)
+
+ chars += self.__dumpAttrs()
+
+ if len(self.children) == 0:
+ chars += '/>'
+ else:
+ chars += '>'
+ for child in self.getChildren():
+ chars += child.dump(level+1)
+
+ chars += "\n"+Element.INDENT*level
+ chars += "</%s>"%self.name
+
+ return chars
+
+ def hasAttr (self, name):
+ return self.attrs.has_key(name)
+
+ def getAttr (self, name):
+ return self.attrs[name]
+
+ def setAttr (self, name, value):
+ if type(value) == type(0):
+ value = "%d"%value
+ self.attrs[name] = removeQuote(value)
+# print "attr: " + self.name + "." + name - stats ...
+ return
+
+ def clone (self, elem):
+ keys = elem.attrs.keys()
+ for key in keys:
+ self.attrs[key] = elem.attrs[key]
+ self.rid = elem.rid
+
+ def __dumpAttrs (self):
+ text = ''
+ keys = self.attrs.keys()
+ keys.sort()
+ for key in keys:
+ value = self.attrs[key]
+ text += ' %s="%s"'%(key, value)
+ return text