pycolib/makeurl.py
author Radek Brich <radek.brich@devl.cz>
Mon, 19 Aug 2013 16:32:33 +0200
changeset 10 51b7e98e1f41
parent 1 ee31f1bf17c1
permissions -rw-r--r--
Fix ColoredFormatted: Colored record could affect other formatters.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
     1
from unicodedata import normalize, combining
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
     2
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
     3
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
     4
def uncombine(text):
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
     5
    return ''.join([c for c in normalize('NFKD', text) if not combining(c)])
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
     6
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
     7
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
     8
def makeurl(title):
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
     9
    norm = uncombine(title)
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    10
    url = norm.lower()
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    11
    url = url.replace(' ', '-')
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    12
    url = url.replace('.', '-')
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    13
    url = url.replace(':', '-')
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    14
    url = url.replace('\'', '')
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    15
    url = url.replace('(', '')
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    16
    url = url.replace(')', '')
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    17
    url = url.replace('\"', '')
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    18
    url = url.replace('?', '')
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    19
    url = url.strip('-')
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    20
    url = url.replace('--', '-')
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    21
    url = url.replace('--', '-')
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    22
    return url
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    23
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    24
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    25
def fix_unicode_chars(text):
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    26
    # replace latin2-unencodable chars with their escape codes
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    27
    return unicode(text.encode('iso-8859-2', 'backslashreplace').replace('\\x','#'), 'iso-8859-2')
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    28