"""Custom classes for routing converters.""" import re from werkzeug.routing import BaseConverter class CommaSeparatedInt(BaseConverter): """Comma separated int pattern matcher.""" regex = r'\d+(?:,\d+)*,?' def to_python(self, value): """Override fn to match comma separated int values.""" if not re.match(r'^\d+(?:,\d+)*,?$', value): return [] return [int(x) for x in value.split(',')] def to_url(self, value): """Override fn to convert values back to string.""" return ','.join(str(x) for x in value) def get_routing_converters(): """All custom routing converters for this ows. Returns: dict: a dict of converters {converter_name : class for conversion} """ return {'comma_separated_int': CommaSeparatedInt}