def parse_int_list(range_string, delim=',', range_delim='-'):
    """
    Returns a sorted list of positive integers based on
    *range_string*. Reverse of :func:`format_int_list`.

    Args:
        range_string (str):
            String of comma separated positive integers or ranges
            (e.g. '1,2,4-6,8'). Typical of a custom page range string used
            in printer dialogs.

        delim (char):
            Defaults to ','. Separates integers and contiguous ranges of
            integers.

        range_delim (char):
            Defaults to '-'. Indicates a contiguous range of integers.

    >>> parse_int_list('1,3,5-8,10-11,15')
    [1, 3, 5, 6, 7, 8, 10, 11, 15]
    """
    output = []

    for element in range_string.strip().split(delim):

        # Range
        if range_delim in element:
            range_limits = list(map(int, element.split(range_delim)))
            output += list(range(min(range_limits), max(range_limits)+1))

        # Empty String
        elif not element:
            continue

        # Integer
        else:
            output.append(int(element))

    return sorted(output)