diff options
Diffstat (limited to 'src/py/javatoolkit/parser/manifest.py')
-rw-r--r-- | src/py/javatoolkit/parser/manifest.py | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/src/py/javatoolkit/parser/manifest.py b/src/py/javatoolkit/parser/manifest.py new file mode 100644 index 0000000..810914a --- /dev/null +++ b/src/py/javatoolkit/parser/manifest.py @@ -0,0 +1,61 @@ +#! /usr/bin/python +# +# Copyright(c) 2006, James Le Cuirot <chewi@aura-online.co.uk> +# +# Licensed under the GNU General Public License, v2 +# +# $Header: $ + +from tree import * +import parser + +class ManifestParser(parser.Parser): + + def parse(self, ins): + """ Parse an input stream containing a MANIFEST.MF file. Return a + structured document represented by tree.Node + + @param ins - input stream + @return tree.Node containing the structured representation + """ + + lineno = 0 + attrib = "" + value = "" + root = Node() + + for x in ins.readlines(): + lineno += 1 + + if len(x.strip()) == 0: + continue + + if x[:1] == " ": + if attrib == "": + raise ParseError("Malformed line " + str(lineno)) + + value += x.strip() + continue + + xs = x.split(": ", 2) + + if len(xs) > 1: + if attrib != "": + root.add_kid(Node(attrib,value)) + + attrib = xs[0] + value = xs[1].strip() + + else: + raise ParseError("Malformed line " + str(lineno)) + + if attrib != "": + root.add_kid(Node(attrib,value)) + + return root + + def output(self, tree): + tree.output("", ": ", "", ",", " "); + +if __name__ == "__main__": + print "This is not an executable module" |