diff options
Diffstat (limited to 'cobbler/Cheetah/Utils/Indenter.py')
-rw-r--r-- | cobbler/Cheetah/Utils/Indenter.py | 135 |
1 files changed, 0 insertions, 135 deletions
diff --git a/cobbler/Cheetah/Utils/Indenter.py b/cobbler/Cheetah/Utils/Indenter.py deleted file mode 100644 index abdb0dd..0000000 --- a/cobbler/Cheetah/Utils/Indenter.py +++ /dev/null @@ -1,135 +0,0 @@ -#!/usr/bin/env python -# $Id: Indenter.py,v 1.7 2006/01/08 01:09:30 tavis_rudd Exp $ -"""Indentation maker. -@@TR: this code is unsupported and largely undocumented ... - -This version is based directly on code by Robert Kuzelj -<robert_kuzelj@yahoo.com> and uses his directive syntax. Some classes and -attributes have been renamed. Indentation is output via -$self._CHEETAH__indenter.indent() to prevent '_indenter' being looked up on the -searchList and another one being found. The directive syntax will -soon be changed somewhat. - -Meta-Data -================================================================================ -Author: Mike Orr <iron@mso.oz.net> -License: This software is released for unlimited distribution under the - terms of the MIT license. See the LICENSE file. -Version: $Revision: 1.7 $ -Start Date: 2001/11/07 -Last Revision Date: $Date: 2006/01/08 01:09:30 $ -""" -__author__ = "Mike Orr <iron@mso.oz.net>" -__revision__ = "$Revision: 1.7 $"[11:-2] - -import re -import sys - -def indentize(source): - return IndentProcessor().process(source) - -class IndentProcessor: - """Preprocess #indent tags.""" - LINE_SEP = '\n' - ARGS = "args" - INDENT_DIR = re.compile(r'[ \t]*#indent[ \t]*(?P<args>.*)') - DIRECTIVE = re.compile(r"[ \t]*#") - WS = "ws" - WHITESPACES = re.compile(r"(?P<ws>[ \t]*)") - - INC = "++" - DEC = "--" - - SET = "=" - CHAR = "char" - - ON = "on" - OFF = "off" - - PUSH = "push" - POP = "pop" - - def process(self, _txt): - result = [] - - for line in _txt.splitlines(): - match = self.INDENT_DIR.match(line) - if match: - #is indention directive - args = match.group(self.ARGS).strip() - if args == self.ON: - line = "#silent $self._CHEETAH__indenter.on()" - elif args == self.OFF: - line = "#silent $self._CHEETAH__indenter.off()" - elif args == self.INC: - line = "#silent $self._CHEETAH__indenter.inc()" - elif args == self.DEC: - line = "#silent $self._CHEETAH__indenter.dec()" - elif args.startswith(self.SET): - level = int(args[1:]) - line = "#silent $self._CHEETAH__indenter.setLevel(%(level)d)" % {"level":level} - elif args.startswith('chars'): - self.indentChars = eval(args.split('=')[1]) - line = "#silent $self._CHEETAH__indenter.setChars(%(level)d)" % {"level":level} - elif args.startswith(self.PUSH): - line = "#silent $self._CHEETAH__indenter.push()" - elif args.startswith(self.POP): - line = "#silent $self._CHEETAH__indenter.pop()" - else: - match = self.DIRECTIVE.match(line) - if not match: - #is not another directive - match = self.WHITESPACES.match(line) - if match: - size = len(match.group("ws").expandtabs(4)) - line = ("${self._CHEETAH__indenter.indent(%(size)d)}" % {"size":size}) + line.lstrip() - else: - line = "${self._CHEETAH__indenter.indent(0)}" + line - result.append(line) - - return self.LINE_SEP.join(result) - -class Indenter: - """A class that keeps track of the current indentation level. - .indent() returns the appropriate amount of indentation. - """ - def __init__(self): - self.On = 1 - self.Level = 0 - self.Chars = " "*4 - self.LevelStack = [] - def on(self): - self.On = 1 - def off(self): - self.On = 0 - def inc(self): - self.Level += 1 - def dec(self): - """decrement can only be applied to values greater zero - values below zero don't make any sense at all!""" - if self.Level > 0: - self.Level -= 1 - def push(self): - self.LevelStack.append(self.Level) - def pop(self): - """the levestack can not become -1. any attempt to do so - sets the level to 0!""" - if len(self.LevelStack) > 0: - self.Level = self.LevelStack.pop() - else: - self.Level = 0 - def setLevel(self, _level): - """the leve can't be less than zero. any attempt to do so - sets the level automatically to zero!""" - if _level < 0: - self.Level = 0 - else: - self.Level = _level - def setChar(self, _chars): - self.Chars = _chars - def indent(self, _default=0): - if self.On: - return self.Chars * self.Level - else: - return " " * _default - |