12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- # -*- coding: utf-8 -*-
- #
- # Copyright (C) 2009-2018 the sqlparse authors and contributors
- # <see AUTHORS file>
- #
- # This module is part of python-sqlparse and is released under
- # the BSD License: https://opensource.org/licenses/BSD-3-Clause
-
- from sqlparse import tokens as T
- from sqlparse.compat import text_type
-
-
- class _CaseFilter(object):
- ttype = None
-
- def __init__(self, case=None):
- case = case or 'upper'
- self.convert = getattr(text_type, case)
-
- def process(self, stream):
- for ttype, value in stream:
- if ttype in self.ttype:
- value = self.convert(value)
- yield ttype, value
-
-
- class KeywordCaseFilter(_CaseFilter):
- ttype = T.Keyword
-
-
- class IdentifierCaseFilter(_CaseFilter):
- ttype = T.Name, T.String.Symbol
-
- def process(self, stream):
- for ttype, value in stream:
- if ttype in self.ttype and value.strip()[0] != '"':
- value = self.convert(value)
- yield ttype, value
-
-
- class TruncateStringFilter(object):
- def __init__(self, width, char):
- self.width = width
- self.char = char
-
- def process(self, stream):
- for ttype, value in stream:
- if ttype != T.Literal.String.Single:
- yield ttype, value
- continue
-
- if value[:2] == "''":
- inner = value[2:-2]
- quote = "''"
- else:
- inner = value[1:-1]
- quote = "'"
-
- if len(inner) > self.width:
- value = ''.join((quote, inner[:self.width], self.char, quote))
- yield ttype, value
|