code: def highlightBlock(self, text):
          
          text = nativestring(text)
          for pattern, format in self.patterns():
              for result in re.finditer(pattern, text):
                  grps = result.groups()
                  if grps:
                      for i in range(len(grps)):
                          start, end = result.span(i+1)
                          self.setFormat(start, end - start, format)
                  else:
                      self.setFormat(result.start(),
                                     result.end() - result.start(),
                                     format)
          
          self.setCurrentBlockState(0)
          if self.previousBlockState() == 1:
              return
          
          for form, open, close in self._multiline:
              open = QtCore.QRegExp(open)
              close = QtCore.QRegExp(close)
              
              start = open.indexIn(text)
              processed = False
              
              while start >= 0:
                  processed = True
                  end = close.indexIn(text, start)
  
                  if end == -1:
                      self.setCurrentBlockState(1)
                      length = len(text) - start
                  else:
                      length = end - start + close.matchedLength()
  
                  self.setFormat(start, length, form)
                  start = open.indexIn(text, start + length)
              
              if processed:
                  break
docs: Highlights the given text format based on this highlighters syntax
          rules.
          
          :param      text | <str>