Cheetah.Utils.Indenter module — Cheetah3 - The Python-Powered Template Engine

# Cheetah.Utils.Indenter module

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.

class `Cheetah.Utils.Indenter.` `IndentProcessor`

  Bases: `object`

  Preprocess #indent tags.

  `ARGS` = 'args'
  `CHAR` = 'char'
  `DEC` = '--'
  `DIRECTIVE` = re.compile('[ \\t]*#')
  `INC` = '++'
  `INDENT_DIR` = re.compile('[ \\t]*#indent[ \\t]*(?P<args>.*)')
  `LINE_SEP` = '\n'
  `OFF` = 'off'
  `ON` = 'on'
  `POP` = 'pop'
  `PUSH` = 'push'
  `SET` = '='
  `WHITESPACES` = re.compile('(?P<ws>[ \\t]*)')
  `WS` = 'ws'
  `process`(_txt)

class `Cheetah.Utils.Indenter.` `Indenter`

  Bases: `object`

  A class that keeps track of the current indentation level. .indent() returns the appropriate amount of indentation.

  `Chars` = ' '
  `Level` = 0
  `LevelStack` = []
  `On` = 1
  `dec`()

    decrement can only be applied to values greater zero values below zero don’t make any sense at all!

  `inc`()
  `indent`(_default=0)
  `off`()
  `on`()
  `pop`()

    the levestack can not become -1. any attempt to do so sets the level to 0!

  `push`()
  `setChar`(_chars)
  `setLevel`(_level)

    the leve can’t be less than zero. any attempt to do so sets the level automatically to zero!

`Cheetah.Utils.Indenter.` `indentize`(source)