Helpviewer/HelpUtilities.py

changeset 1953
26aa6fd94dc2
child 1965
96f5a76e1845
equal deleted inserted replaced
1952:af4103f0e93f 1953:26aa6fd94dc2
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2012 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing some global helper functions.
8 """
9
10 import os
11
12 from PyQt4.QtCore import QUrl
13
14
15 def getFileNameFromUrl(url):
16 """
17 Module function to generate a file name based on the given URL.
18
19 @param url URL (QUrl)
20 @return file name (string)
21 """
22 fileName = url.toString(QUrl.RemoveFragment | QUrl.RemoveQuery |
23 QUrl.RemoveScheme | QUrl.RemovePort)
24 if fileName.find("/") != -1:
25 pos = fileName.rfind("/")
26 fileName = fileName[pos:]
27 fileName = fileName.replace("/", "")
28
29 fileName = filterCharsFromFilename(fileName)
30
31 if not fileName:
32 fileName = filterCharsFromFilename(url.host().replace(".", "_"))
33
34 return fileName
35
36
37 def filterCharsFromFilename(name):
38 """
39 Module function to filter illegal characters.
40
41 @param name name to be sanitized (string)
42 @return sanitized name (string)
43 """
44 return name\
45 .replace("/", "_")\
46 .replace("\\", "")\
47 .replace(":", "")\
48 .replace("*", "")\
49 .replace("?", "")\
50 .replace('"', "")\
51 .replace("<", "")\
52 .replace(">", "")\
53 .replace("|", "")
54
55
56 def ensureUniqueFilename(name, appendFormat="({0})"):
57 """
58 Module function to generate an unique file name based on a pattern.
59
60 @param name desired file name (string)
61 @param appendFormat format pattern to be used to make the unique name (string)
62 @return unique file name
63 """
64 if not os.path.exists(name):
65 return name
66
67 tmpFileName = name
68 i = 1
69 while os.path.exists(tmpFileName):
70 tmpFileName = name
71 index = tmpFileName.rfind(".")
72
73 appendString = appendFormat.format(i)
74 if index == -1:
75 tmpFileName += appendString
76 else:
77 tmpFileName = tmpFileName[:index] + appendString + tmpFileName[index:]
78 i += 1
79
80 return tmpFileName

eric ide

mercurial