File: fmt.py

package info (click to toggle)
dirsearch 0.4.2%2Bds-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 864 kB
  • sloc: python: 3,486; makefile: 2; sh: 2
file content (84 lines) | stat: -rwxr-xr-x 2,706 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# -*- coding: utf-8 -*-
#  This program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with this program; if not, write to the Free Software
#  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
#  MA 02110-1301, USA.
#
#  Author: Mauro Soria

from chardet import detect
from urllib.parse import quote


def safequote(string):
    return quote(string, safe="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~")


def get_encoding_type(content):
    return detect(content)["encoding"] or "utf-8"


def uniq(string_list, filt=False):
    if not string_list:
        return string_list

    unique = dict.fromkeys(string_list)
    return list(filter(None, unique)) if filt else list(unique)


# Some characters are denied in file name by Windows
def clean_filename(string):
    special_chars = ["\\", "/", "*", "?", ":", '"', "<", ">", "|"]
    for char in special_chars:
        string = string.replace(char, "-")

    return string


def lowercase(data):
    if isinstance(data, str):
        return data.lower()
    elif isinstance(data, list):
        return [i.lower() for i in data if isinstance(i, str)]
    elif isinstance(data, dict):
        return dict((key.lower(), value) for key, value in data.items())
    elif isinstance(data, tuple):
        return tuple(i.lower() for i in data if isinstance(i, str))
    else:
        return data


def uppercase(data):
    if isinstance(data, str):
        return data.upper()
    elif isinstance(data, list):
        return [i.upper() for i in data if isinstance(i, str)]
    elif isinstance(data, dict):
        return dict((key.upper(), value) for key, value in data.items())
    elif isinstance(data, tuple):
        return tuple(i.upper() for i in data if isinstance(i, str))
    else:
        return data


def capitalize(data):
    if isinstance(data, str):
        return data.capitalize()
    elif isinstance(data, list):
        return [i.capitalize() for i in data if isinstance(i, str)]
    elif isinstance(data, dict):
        return dict((key.capitalize(), value) for key, value in data.items())
    elif isinstance(data, tuple):
        return tuple(i.capitalize() for i in data if isinstance(i, str))
    else:
        return data