class_docstr: For reStructuredText markup.
  
  .. versionadded:: 0.7
  
  Additional options accepted:
  
  `handlecodeblocks`
      Highlight the contents of ``.. sourcecode:: language``,
      ``.. code:: language`` and ``.. code-block:: language``
      directives with a lexer for the given language (default:
      ``True``).
  
      .. versionadded:: 0.8
class_docstr_tok: ["For","reStructuredText","markup",".","..","versionadded",":",":","0.7","Additional","options","accepted",":","`","handlecodeblocks","`","Highlight","the","contents","of","``","..","sourcecode",":",":","language","``",",","``","..","code",":",":","language","``","and","``","..","code-block",":",":","language","``","directives","with","a","lexer","for","the","given","language","(","default",":","``","True","``",")",".","..","versionadded",":",":","0.8"]
code: def _handle_sourcecode(self, match):
      from pygments.lexers import get_lexer_by_name
  
      # section header
      yield match.start(1), Punctuation, match.group(1)
      yield match.start(2), Text, match.group(2)
      yield match.start(3), Operator.Word, match.group(3)
      yield match.start(4), Punctuation, match.group(4)
      yield match.start(5), Text, match.group(5)
      yield match.start(6), Keyword, match.group(6)
      yield match.start(7), Text, match.group(7)
  
      # lookup lexer if wanted and existing
      lexer = None
      if self.handlecodeblocks:
          try:
              lexer = get_lexer_by_name(match.group(6).strip())
          except ClassNotFound:
              pass
      indention = match.group(8)
      indention_size = len(indention)
      code = (
          indention + match.group(9) + match.group(10) + match.group(11)
      )
  
      # no lexer for this language. handle it like it was a code block
      if lexer is None:
          yield match.start(8), String, code
          return
  
      # highlight the lines with the lexer.
      ins = []
      codelines = code.splitlines(True)
      code = ""
      for line in codelines:
          if len(line) > indention_size:
              ins.append(
                  (len(code), [(0, Text, line[:indention_size])])
              )
              code += line[indention_size:]
          else:
              code += line
      yield from do_insertions(ins, lexer.get_tokens_unprocessed(code))
  
imports: import re
  from pygments.lexers.html import XmlLexer
  from pygments.lexers.javascript import JavascriptLexer
  from pygments.lexers.css import CssLexer
  from pygments.lexers.lilypond import LilyPondLexer
  from pygments.lexers.data import JsonLexer
  from pygments.lexer import RegexLexer, DelegatingLexer, include, bygroups, using, this, do_insertions, default, words
  from pygments.token import Text, Comment, Operator, Keyword, Name, String, Number, Punctuation, Generic, Other, Whitespace
  from pygments.util import get_bool_opt, ClassNotFound
label_desc: Use image node_id 1 for calling the RstLexer obj's underlying member method code with example usage: obj._handle_sourcecode(match) without return types