code: def markup(self, text, escape=None, funcs={}, classes={}, methods={}):
          
          escape = escape or self.escape
          results = []
          here = 0
  
          # XXX Note that this regular expression does not allow for the
          # hyperlinking of arbitrary strings being used as method
          # names. Only methods with names consisting of word characters
          # and '.'s are hyperlinked.
          pattern = re.compile(r'\b((http|ftp)://\S+[\w/]|'
                                  r'RFC[- ]?(\d+)|'
                                  r'PEP[- ]?(\d+)|'
                                  r'(self\.)?((?:\w|\.)+))\b')
          while 1:
              match = pattern.search(text, here)
              if not match: break
              start, end = match.span()
              results.append(escape(text[here:start]))
  
              all, scheme, rfc, pep, selfdot, name = match.groups()
              if scheme:
                  url = escape(all).replace('"', '&quot;')
                  results.append('<a href="%s">%s</a>' % (url, url))
              elif rfc:
                  url = 'http://www.rfc-editor.org/rfc/rfc%d.txt' % int(rfc)
                  results.append('<a href="%s">%s</a>' % (url, escape(all)))
              elif pep:
                  url = 'http://www.python.org/dev/peps/pep-%04d/' % int(pep)
                  results.append('<a href="%s">%s</a>' % (url, escape(all)))
              elif text[end:end+1] == '(':
                  results.append(self.namelink(name, methods, funcs, classes))
              elif selfdot:
                  results.append('self.<strong>%s</strong>' % name)
              else:
                  results.append(self.namelink(name, classes))
              here = end
          results.append(escape(text[here:]))
          return ''.join(results)
docs: Mark up some plain text, given a context of symbols to look for.
          Each context dictionary maps object names to anchor names.