'Register a token\'s whitespace prefix.
This is the whitespace that will be output before a token\'s string.
Arguments:
newlines_before: (int) The number of newlines to place before the token.
spaces: (int) The number of spaces to place before the token.
indent_level: (int) The indentation level.'

def AddWhitespacePrefix(self, newlines_before, spaces=0, indent_level=0):

    indent_char = (' DCTB ' if style.Get('USE_TABS') else '    ')
    token_indent_char = (indent_char if (newlines_before > 0) else '    ')
    indent_before = (((indent_char * indent_level) * style.Get('INDENT_WIDTH')) + (token_indent_char * spaces))
    if self.is_comment:
        comment_lines = [s.lstrip() for s in self.value.splitlines()]
        self.node.value = ('\n' + indent_before).join(comment_lines)
        self.value = self.node.value
    if (not self.whitespace_prefix):
        self.whitespace_prefix = (('\n' * (self.newlines or newlines_before)) + indent_before)
    else:
        self.whitespace_prefix += indent_before
