mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Normalize white space in titles
This commit is contained in:
parent
d6754fe4d8
commit
7f8ff21a91
@ -5,6 +5,7 @@
|
|||||||
from __future__ import (unicode_literals, division, absolute_import,
|
from __future__ import (unicode_literals, division, absolute_import,
|
||||||
print_function)
|
print_function)
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
|
from functools import wraps
|
||||||
import re
|
import re
|
||||||
|
|
||||||
from lxml import etree
|
from lxml import etree
|
||||||
@ -70,6 +71,17 @@ def ensure_id(root, elem):
|
|||||||
eid = ensure_unique('id', frozenset(XPath('//*/@id')(root)))
|
eid = ensure_unique('id', frozenset(XPath('//*/@id')(root)))
|
||||||
elem.set('id', eid)
|
elem.set('id', eid)
|
||||||
return eid
|
return eid
|
||||||
|
|
||||||
|
def normalize_whitespace(text):
|
||||||
|
if not text:
|
||||||
|
return text
|
||||||
|
return re.sub(r'\s+', ' ', text).strip()
|
||||||
|
|
||||||
|
def simple_text(f):
|
||||||
|
@wraps(f)
|
||||||
|
def wrapper(*args, **kw):
|
||||||
|
return normalize_whitespace(f(*args, **kw))
|
||||||
|
return wrapper
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
# Prefixes {{{
|
# Prefixes {{{
|
||||||
@ -229,10 +241,12 @@ def find_main_title(root, refines, remove_blanks=False):
|
|||||||
main_title = first_title
|
main_title = first_title
|
||||||
return main_title
|
return main_title
|
||||||
|
|
||||||
|
@simple_text
|
||||||
def read_title(root, prefixes, refines):
|
def read_title(root, prefixes, refines):
|
||||||
main_title = find_main_title(root, refines)
|
main_title = find_main_title(root, refines)
|
||||||
return None if main_title is None else main_title.text.strip()
|
return None if main_title is None else main_title.text.strip()
|
||||||
|
|
||||||
|
@simple_text
|
||||||
def read_title_sort(root, prefixes, refines):
|
def read_title_sort(root, prefixes, refines):
|
||||||
main_title = find_main_title(root, refines)
|
main_title = find_main_title(root, refines)
|
||||||
if main_title is not None:
|
if main_title is not None:
|
||||||
|
@ -83,8 +83,9 @@ class TestOPF3(unittest.TestCase):
|
|||||||
self.ae(rt(root), 'xxx')
|
self.ae(rt(root), 'xxx')
|
||||||
self.ae(st(root, 'abc', 'cba'), 'abc')
|
self.ae(st(root, 'abc', 'cba'), 'abc')
|
||||||
self.ae(read_title_sort(root, reserved_prefixes, read_refines(root)), 'cba')
|
self.ae(read_title_sort(root, reserved_prefixes, read_refines(root)), 'cba')
|
||||||
root = self.get_opf('''<dc:title>yyy</dc:title><dc:title id='t'>xxx
|
root = self.get_opf('''<dc:title>yyy</dc:title><dc:title id='t'>x xx
|
||||||
</dc:title><meta refines='#t' property='title-type'>main</meta><meta name="calibre:title_sort" content="sorted"/>''')
|
</dc:title><meta refines='#t' property='title-type'>main</meta><meta name="calibre:title_sort" content="sorted"/>''')
|
||||||
|
self.ae(rt(root), 'x xx')
|
||||||
self.ae(read_title_sort(root, reserved_prefixes, read_refines(root)), 'sorted')
|
self.ae(read_title_sort(root, reserved_prefixes, read_refines(root)), 'sorted')
|
||||||
self.ae(st(root, 'abc'), 'abc')
|
self.ae(st(root, 'abc'), 'abc')
|
||||||
# }}}
|
# }}}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user