From f9d964f35885a3f302e1c11c77525781a5b5e4b6 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 1 May 2017 19:46:29 +0530 Subject: [PATCH] A spot of refactoring --- src/calibre/db/cli/__init__.py | 10 ++++++++++ src/calibre/db/cli/cmd_remove.py | 8 ++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/calibre/db/cli/__init__.py b/src/calibre/db/cli/__init__.py index 8b0fd3c5e3..f74cad64d9 100644 --- a/src/calibre/db/cli/__init__.py +++ b/src/calibre/db/cli/__init__.py @@ -9,3 +9,13 @@ import importlib def module_for_cmd(cmd): return importlib.import_module('calibre.db.cli.cmd_' + cmd) + + +def integers_from_string(arg, include_last_inrange=False): + for x in arg.split(','): + y = tuple(map(int, x.split('-'))) + if len(y) > 1: + for y in range(y[0], y[1] + int(bool(include_last_inrange))): + yield y + else: + yield y[0] diff --git a/src/calibre/db/cli/cmd_remove.py b/src/calibre/db/cli/cmd_remove.py index a73d955468..6ed5339e81 100644 --- a/src/calibre/db/cli/cmd_remove.py +++ b/src/calibre/db/cli/cmd_remove.py @@ -4,6 +4,7 @@ from __future__ import absolute_import, division, print_function, unicode_literals +from calibre.db.cli import integers_from_string from calibre.db.delete_service import delete_service from calibre.srv.changes import books_deleted @@ -46,12 +47,7 @@ def main(opts, args, dbctx): ids = set() for arg in args: - for x in arg.split(','): - y = tuple(map(int, x.split('-'))) - if len(y) > 1: - ids |= set(range(y[0], y[1])) - else: - ids.add(y[0]) + ids |= set(integers_from_string(arg)) dbctx.run('remove', ids, opts.permanent)