diff options
Diffstat (limited to 'qpid/python/mllib/__init__.py')
-rw-r--r-- | qpid/python/mllib/__init__.py | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/qpid/python/mllib/__init__.py b/qpid/python/mllib/__init__.py new file mode 100644 index 0000000000..44b78126fb --- /dev/null +++ b/qpid/python/mllib/__init__.py @@ -0,0 +1,60 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +""" +This module provides document parsing and transformation utilities for +both SGML and XML. +""" + +import dom, transforms, parsers +import xml.sax, types +from cStringIO import StringIO + +def transform(node, *args): + result = node + for t in args: + if isinstance(t, types.ClassType): + t = t() + result = result.dispatch(t) + return result + +def sgml_parse(source): + if isinstance(source, basestring): + source = StringIO(source) + fname = "<string>" + elif hasattr(source, "name"): + fname = source.name + p = parsers.SGMLParser() + num = 1 + for line in source: + p.feed(line) + p.parser.line(fname, num, None) + num += 1 + p.close() + return p.parser.tree + +def xml_parse(source): + p = parsers.XMLParser() + xml.sax.parse(source, p) + return p.parser.tree + +def sexp(node): + s = transforms.Sexp() + node.dispatch(s) + return s.out |