# -*- coding: utf-8 -*- # # Copyright (C) 2009-2018 the sqlparse authors and contributors # # # 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