docs: def _handle_tag_data(self, data, text):
          """Handle all sorts of *text* data inside of an HTML open tag."""
          for chunk in self.tag_splitter.split(text):
              if not chunk:
                  continue
              if data.context & data.CX_NAME:
                  if chunk in self.MARKERS or chunk.isspace():
                      self._fail_route()  # Tags must start with text, not spaces
                  data.context = data.CX_NOTE_SPACE
              elif chunk.isspace():
                  self._handle_tag_space(data, chunk)
                  continue
              elif data.context & data.CX_NOTE_SPACE:
                  if data.context & data.CX_QUOTED:
                      data.context = data.CX_ATTR_VALUE
                      self._memoize_bad_route()
                      self._pop()
                      self._head = data.reset - 1  # Will be auto-incremented
                      return  # Break early
                  self._fail_route()
              elif data.context & data.CX_ATTR_READY:
                  data.context = data.CX_ATTR_NAME
                  self._push(contexts.TAG_ATTR)
              elif data.context & data.CX_ATTR_NAME:
                  if chunk == "=":
                      data.context = data.CX_ATTR_VALUE | data.CX_NOTE_QUOTE
                      self._emit(tokens.TagAttrEquals())
                      continue
                  if data.context & data.CX_NOTE_EQUALS:
                      self._push_tag_buffer(data)
                      data.context = data.CX_ATTR_NAME
                      self._push(contexts.TAG_ATTR)
              else:  # data.context & data.CX_ATTR_VALUE assured
                  escaped = self._read(-1) == "\\" and self._read(-2) != "\\"
                  if data.context & data.CX_NOTE_QUOTE:
                      data.context ^= data.CX_NOTE_QUOTE
                      if chunk in "'\"" and not escaped:
                          data.context |= data.CX_QUOTED
                          data.quoter = chunk
                          data.reset = self._head
                          try:
                              self._push(self._context)
                          except BadRoute:
                              # Already failed to parse this as a quoted string
                              data.context = data.CX_ATTR_VALUE
                              self._head -= 1
                              return
                          continue
                  elif data.context & data.CX_QUOTED:
                      if chunk == data.quoter and not escaped:
                          data.context |= data.CX_NOTE_SPACE
                          continue
              self._handle_tag_text(chunk)