diff --git a/src/calibre/ebooks/metadata/tag_mapper.py b/src/calibre/ebooks/metadata/tag_mapper.py index 2a672ddc05..e32866373e 100644 --- a/src/calibre/ebooks/metadata/tag_mapper.py +++ b/src/calibre/ebooks/metadata/tag_mapper.py @@ -82,6 +82,10 @@ def apply_rules(tag, rules): if ac == 'capitalize': ans.append(tag.capitalize()) break + if ac == 'titlecase': + from calibre.utils.titlecase import titlecase + ans.append(titlecase(tag)) + break if ac == 'lower': ans.append(icu_lower(tag)) break @@ -149,6 +153,7 @@ def find_tests(): self.assertEqual(ans, expected) run(rule('capitalize', 't1,t2'), 't1,x1', 'T1,x1') + run(rule('titlecase', 'some tag'), 'some tag,x1', 'Some Tag,x1') run(rule('upper', 'ta,t2'), 'ta,x1', 'TA,x1') run(rule('lower', 'ta,x1'), 'TA,X1', 'ta,x1') run(rule('replace', 't1', 't2'), 't1,x1', 't2,x1') diff --git a/src/calibre/gui2/tag_mapper.py b/src/calibre/gui2/tag_mapper.py index 1993873b2e..44fd8e5ab7 100644 --- a/src/calibre/gui2/tag_mapper.py +++ b/src/calibre/gui2/tag_mapper.py @@ -47,6 +47,7 @@ class RuleEdit(QWidget): ('replace', _('Replace')), ('keep', _('Keep')), ('capitalize', _('Capitalize')), + ('titlecase', _('Title-case')), ('lower', _('Lower-case')), ('upper', _('Upper-case')), ('split', _('Split')), diff --git a/src/calibre/utils/titlecase.py b/src/calibre/utils/titlecase.py index 5aee03d85f..a8364cba6b 100755 --- a/src/calibre/utils/titlecase.py +++ b/src/calibre/utils/titlecase.py @@ -1,5 +1,6 @@ #!/usr/bin/env python2 # -*- coding: utf-8 -*- +from __future__ import absolute_import, division, print_function, unicode_literals """ Original Perl version by: John Gruber https://daringfireball.net/ 10 May 2008