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

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 

7 

8from sqlparse import tokens as T 

9 

10 

11class _CaseFilter: 

12 ttype = None 

13 

14 def __init__(self, case=None): 

15 case = case or 'upper' 

16 self.convert = getattr(str, case) 

17 

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 

23 

24 

25class KeywordCaseFilter(_CaseFilter): 

26 ttype = T.Keyword 

27 

28 

29class IdentifierCaseFilter(_CaseFilter): 

30 ttype = T.Name, T.String.Symbol 

31 

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 

37 

38 

39class TruncateStringFilter: 

40 def __init__(self, width, char): 

41 self.width = width 

42 self.char = char 

43 

44 def process(self, stream): 

45 for ttype, value in stream: 

46 if ttype != T.Literal.String.Single: 

47 yield ttype, value 

48 continue 

49 

50 if value[:2] == "''": 

51 inner = value[2:-2] 

52 quote = "''" 

53 else: 

54 inner = value[1:-1] 

55 quote = "'" 

56 

57 if len(inner) > self.width: 

58 value = ''.join((quote, inner[:self.width], self.char, quote)) 

59 yield ttype, value