Coverage for /var/srv/projects/api.amasfac.comuna18.com/tmp/venv/lib/python3.9/site-packages/sqlparse/filters/tokens.py: 34%
37 statements
« prev ^ index » next coverage.py v6.4.4, created at 2023-07-17 14:22 -0600
« prev ^ index » next coverage.py v6.4.4, created at 2023-07-17 14:22 -0600
1#
2# Copyright (C) 2009-2020 the sqlparse authors and contributors
3# <see AUTHORS file>
4#
5# This module is part of python-sqlparse and is released under
6# the BSD License: https://opensource.org/licenses/BSD-3-Clause
8from sqlparse import tokens as T
11class _CaseFilter:
12 ttype = None
14 def __init__(self, case=None):
15 case = case or 'upper'
16 self.convert = getattr(str, case)
18 def process(self, stream):
19 for ttype, value in stream:
20 if ttype in self.ttype:
21 value = self.convert(value)
22 yield ttype, value
25class KeywordCaseFilter(_CaseFilter):
26 ttype = T.Keyword
29class IdentifierCaseFilter(_CaseFilter):
30 ttype = T.Name, T.String.Symbol
32 def process(self, stream):
33 for ttype, value in stream:
34 if ttype in self.ttype and value.strip()[0] != '"':
35 value = self.convert(value)
36 yield ttype, value
39class TruncateStringFilter:
40 def __init__(self, width, char):
41 self.width = width
42 self.char = char
44 def process(self, stream):
45 for ttype, value in stream:
46 if ttype != T.Literal.String.Single:
47 yield ttype, value
48 continue
50 if value[:2] == "''":
51 inner = value[2:-2]
52 quote = "''"
53 else:
54 inner = value[1:-1]
55 quote = "'"
57 if len(inner) > self.width:
58 value = ''.join((quote, inner[:self.width], self.char, quote))
59 yield ttype, value