From e7017f3ccb907e3219c0bbfe488d86021298b6aa Mon Sep 17 00:00:00 2001 From: Thomas Adamcik Date: Thu, 23 Jan 2014 00:40:18 +0100 Subject: [PATCH] mpd: Add protocol.position_or_range converter --- mopidy/mpd/protocol/__init__.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/mopidy/mpd/protocol/__init__.py b/mopidy/mpd/protocol/__init__.py index 06a1b3ab..9e85d058 100644 --- a/mopidy/mpd/protocol/__init__.py +++ b/mopidy/mpd/protocol/__init__.py @@ -108,6 +108,21 @@ def boolean(value): raise ValueError('%r is not 0 or 1' % value) +def position_or_range(value): + # TODO: test and check that values are positive + if ':' in value: + start, stop = value.split(':', 1) + start = int(start) + if stop.strip(): + stop = int(stop) + else: + stop = None + else: + start = int(value) + stop = start + 1 + return slice(start, stop) + + class Commands(object): def __init__(self): self.handlers = {}