diff options
author | Karl Berry <karl@freefriends.org> | 2014-10-11 22:30:33 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2014-10-11 22:30:33 +0000 |
commit | 4888499385c44655bec69496f0e01649d7636627 (patch) | |
tree | b4530c653b64a9b165768c4423d6bcf0dd192c31 /Master/texmf-dist/scripts/latex-make/svgdepth.py | |
parent | 9406c7d3ffc09ac95d52d72e53d84e010a0a747d (diff) |
latex-make (11oct14)
git-svn-id: svn://tug.org/texlive/trunk@35357 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/scripts/latex-make/svgdepth.py')
-rwxr-xr-x | Master/texmf-dist/scripts/latex-make/svgdepth.py | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/Master/texmf-dist/scripts/latex-make/svgdepth.py b/Master/texmf-dist/scripts/latex-make/svgdepth.py new file mode 100755 index 00000000000..6f146647b15 --- /dev/null +++ b/Master/texmf-dist/scripts/latex-make/svgdepth.py @@ -0,0 +1,55 @@ +#!/usr/bin/env python +#coding=utf8 + +import sys +import xml.parsers.expat + +layers = [] +for arg in sys.argv: + layers.append(arg) + +parser = xml.parsers.expat.ParserCreate() +class XmlParser(object): + def __init__(self, layers): + self.state_stack = [True] + self.last_state = True + self.layers = layers + def XmlDeclHandler(self, version, encoding, standalone): + sys.stdout.write("<?xml version='%s' encoding='%s'?>\n" % (version, encoding)) + def StartDoctypeDeclHandler(self, doctypeName, systemId, publicId, has_internal_subset): + if publicId != None: sys.stdout.write("<!DOCTYPE %s PUBLIC \"%s\" \"%s\">\n" %\ + (doctypeName, publicId, systemId)) + else: sys.stdout.write("<!DOCTYPE %s \"%s\">\n" % (doctypeName, systemId)) + def StartElementHandler(self, name, attributes): + if name.lower() == 'g': + r = self.last_state and ('id' not in attributes or \ + attributes['id'] in self.layers) + self.last_state = r + self.state_stack.append(r) + if not self.last_state: return + s = "" + for k, v in attributes.items(): s += ' %s="%s"' % (k, v) + sys.stdout.write("<%s%s>" % (name, s)) + def EndElementHandler(self, name): + r = self.last_state + if name.lower() == 'g': + self.state_stack = self.state_stack[0:-1] + self.last_state = self.state_stack[-1] + if not r: return + sys.stdout.write("</%s>" % (name)) + def CharacterDataHandler(self, data): + if not self.last_state: return + sys.stdout.write(data) + +my_parser = XmlParser(layers) + +parser.XmlDeclHandler = my_parser.XmlDeclHandler +parser.StartDoctypeDeclHandler = my_parser.StartDoctypeDeclHandler +parser.StartElementHandler = my_parser.StartElementHandler +parser.EndElementHandler = my_parser.EndElementHandler +parser.CharacterDataHandler = my_parser.CharacterDataHandler + +for line in sys.stdin: + parser.Parse(line, False) +parser.Parse('', True) + |