mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Proper escaping for filename completion candidates
This commit is contained in:
parent
20bc198cb7
commit
ba6a257331
@ -78,11 +78,11 @@ def name_to_abspath(name, root):
|
|||||||
def abspath_to_name(path, root):
|
def abspath_to_name(path, root):
|
||||||
return relpath(os.path.abspath(path), root).replace(os.sep, '/')
|
return relpath(os.path.abspath(path), root).replace(os.sep, '/')
|
||||||
|
|
||||||
def name_to_href(name, root, base=None):
|
def name_to_href(name, root, base=None, quote=urlquote):
|
||||||
fullpath = name_to_abspath(name, root)
|
fullpath = name_to_abspath(name, root)
|
||||||
basepath = root if base is None else os.path.dirname(name_to_abspath(base, root))
|
basepath = root if base is None else os.path.dirname(name_to_abspath(base, root))
|
||||||
path = relpath(fullpath, basepath).replace(os.sep, '/')
|
path = relpath(fullpath, basepath).replace(os.sep, '/')
|
||||||
return urlquote(path)
|
return quote(path)
|
||||||
|
|
||||||
def href_to_name(href, root, base=None):
|
def href_to_name(href, root, base=None):
|
||||||
base = root if base is None else os.path.dirname(name_to_abspath(base, root))
|
base = root if base is None else os.path.dirname(name_to_abspath(base, root))
|
||||||
|
@ -11,6 +11,7 @@ from collections import namedtuple, OrderedDict
|
|||||||
|
|
||||||
from PyQt5.Qt import QObject, pyqtSignal, Qt
|
from PyQt5.Qt import QObject, pyqtSignal, Qt
|
||||||
|
|
||||||
|
from calibre import prepare_string_for_xml
|
||||||
from calibre.ebooks.oeb.polish.container import OEB_STYLES, OEB_FONTS, name_to_href
|
from calibre.ebooks.oeb.polish.container import OEB_STYLES, OEB_FONTS, name_to_href
|
||||||
from calibre.gui2 import is_gui_thread
|
from calibre.gui2 import is_gui_thread
|
||||||
from calibre.gui2.tweak_book import current_container
|
from calibre.gui2.tweak_book import current_container
|
||||||
@ -62,8 +63,9 @@ def complete_names(names_data, data_conn):
|
|||||||
for n in names_cache[x]:
|
for n in names_cache[x]:
|
||||||
d[n] = desc
|
d[n] = desc
|
||||||
names_type, base, root = names_data
|
names_type, base, root = names_data
|
||||||
|
quote = (lambda x:x) if base.lower().endswith('.css') else prepare_string_for_xml
|
||||||
names = names_cache.get(names_type, names_cache[None])
|
names = names_cache.get(names_type, names_cache[None])
|
||||||
nmap = {name:name_to_href(name, root, base) for name in names}
|
nmap = {name:name_to_href(name, root, base, quote) for name in names}
|
||||||
items = frozenset(nmap.itervalues())
|
items = frozenset(nmap.itervalues())
|
||||||
descriptions = {href:names_cache.get(name) for name, href in nmap.iteritems()}
|
descriptions = {href:names_cache.get(name) for name, href in nmap.iteritems()}
|
||||||
return items, descriptions, {}
|
return items, descriptions, {}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user