code: 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