#!/usr/bin/env python # -*- encoding: utf-8 ## pp-indent - Filter to apply indentation to preprocessor statements ## ## Copyright ©2013 Ben Longbons ## ## This file is part of The Mana World (Athena server) ## ## This program is free software: you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation, either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program. If not, see . # Settings. pre_indent = '' post_indent = ' ' rules = { 'if': (0, 1), 'ifdef': (0, 1), 'ifndef': (0, 1), 'else': (-1, 1), 'elif': (-1, 1), 'endif': (-1, 0), 'define_h': (-1, 1), } import sys depth = 0 for line in sys.stdin: sline = line.lstrip() if not sline.startswith('#'): sys.stdout.write(line) continue line = sline[1:].lstrip() if not line: sys.stdout.write('\n') continue word = line.split(None, 1)[0] if word == 'define' and line.endswith('_HPP\n'): word = 'define_h' pre, post = rules.get(word, (0, 0)) depth += pre sys.stdout.writelines([depth * pre_indent, '#', depth * post_indent, line]) depth += post