From 1eba328f26b1f2ce4b107b860d424f64bf20434f Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 6 Jan 2020 17:52:29 +0530 Subject: [PATCH] DRYer --- src/calibre/spell/break_iterator.py | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/src/calibre/spell/break_iterator.py b/src/calibre/spell/break_iterator.py index 347da1d20a..e82f8a25cc 100644 --- a/src/calibre/spell/break_iterator.py +++ b/src/calibre/spell/break_iterator.py @@ -14,37 +14,36 @@ _iterators = {} _lock = Lock() +def get_iterator(lang): + it = _iterators.get(lang) + if it is None: + it = _iterators[lang] = _icu.BreakIterator(_icu.UBRK_WORD, lang_as_iso639_1(lang) or lang) + return it + + def split_into_words(text, lang='en'): with _lock: - it = _iterators.get(lang, None) - if it is None: - it = _iterators[lang] = _icu.BreakIterator(_icu.UBRK_WORD, lang_as_iso639_1(lang) or lang) + it = get_iterator(lang) it.set_text(text) return [text[p:p+s] for p, s in it.split2()] def split_into_words_and_positions(text, lang='en'): with _lock: - it = _iterators.get(lang, None) - if it is None: - it = _iterators[lang] = _icu.BreakIterator(_icu.UBRK_WORD, lang_as_iso639_1(lang) or lang) + it = get_iterator(lang) it.set_text(text) return it.split2() def index_of(needle, haystack, lang='en'): with _lock: - it = _iterators.get(lang, None) - if it is None: - it = _iterators[lang] = _icu.BreakIterator(_icu.UBRK_WORD, lang_as_iso639_1(lang) or lang) + it = get_iterator(lang) it.set_text(haystack) return it.index(needle) def count_words(text, lang='en'): with _lock: - it = _iterators.get(lang, None) - if it is None: - it = _iterators[lang] = _icu.BreakIterator(_icu.UBRK_WORD, lang_as_iso639_1(lang) or lang) + it = get_iterator(lang) it.set_text(text) return it.count_words()