def parse_tags(tagstring):
    if not tagstring:
        return []
    tagstring = force_text(tagstring)
    words = []
    buffer = []
    to_be_split = []
    i = iter(tagstring)
    try:
        while True:
            c = six.next(i)
            if c == '"':
                if buffer:
                    to_be_split.append(''.join(buffer))
                    buffer = []
                c = six.next(i)
                while c != '"':
                    buffer.append(c)
                    c = six.next(i)
                if buffer:
                    word = ''.join(buffer).strip()
                    if word:
                        words.append(word)
                    buffer = []
            else:
                buffer.append(c)
    except StopIteration:
        if buffer:
            to_be_split.append(''.join(buffer))
    if to_be_split:
        for chunk in to_be_split:
            words.extend(split_strip(chunk, settings.TAGGIT_SELECTIZE['DELIMITER']))
    words = list(set(words))
    words.sort()
    return words