Spaces:
Running
Running
| ############################################################################# | |
| ## | |
| ## Copyright (C) 2014 Riverbank Computing Limited. | |
| ## Copyright (C) 2006 Thorsten Marek. | |
| ## All right reserved. | |
| ## | |
| ## This file is part of PyQt. | |
| ## | |
| ## You may use this file under the terms of the GPL v2 or the revised BSD | |
| ## license as follows: | |
| ## | |
| ## "Redistribution and use in source and binary forms, with or without | |
| ## modification, are permitted provided that the following conditions are | |
| ## met: | |
| ## * Redistributions of source code must retain the above copyright | |
| ## notice, this list of conditions and the following disclaimer. | |
| ## * Redistributions in binary form must reproduce the above copyright | |
| ## notice, this list of conditions and the following disclaimer in | |
| ## the documentation and/or other materials provided with the | |
| ## distribution. | |
| ## * Neither the name of the Riverbank Computing Limited nor the names | |
| ## of its contributors may be used to endorse or promote products | |
| ## derived from this software without specific prior written | |
| ## permission. | |
| ## | |
| ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | |
| ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | |
| ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | |
| ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | |
| ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |
| ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |
| ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |
| ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | |
| ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
| ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | |
| ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." | |
| ## | |
| ############################################################################# | |
| indentwidth = 4 | |
| _indenter = None | |
| class _IndentedCodeWriter(object): | |
| def __init__(self, output): | |
| self.level = 0 | |
| self.output = output | |
| def indent(self): | |
| self.level += 1 | |
| def dedent(self): | |
| self.level -= 1 | |
| def write(self, line): | |
| if line.strip(): | |
| if indentwidth > 0: | |
| indent = " " * indentwidth | |
| line = line.replace("\t", indent) | |
| else: | |
| indent = "\t" | |
| self.output.write("%s%s\n" % (indent * self.level, line)) | |
| else: | |
| self.output.write("\n") | |
| def createCodeIndenter(output): | |
| global _indenter | |
| _indenter = _IndentedCodeWriter(output) | |
| def getIndenter(): | |
| return _indenter | |
| def write_code(string): | |
| _indenter.write(string) | |