new_contents: # -*- coding: utf-8 -*-
  from docutils import nodes
  from docutils.parsers.rst import directives, Directive
  from pygments.formatters import HtmlFormatter
  from pygments import highlight
  from pygments.lexers import get_lexer_by_name, TextLexer
  
  INLINESTYLES = False
  DEFAULT = HtmlFormatter(noclasses=INLINESTYLES)
  VARIANTS = {
      'linenos': HtmlFormatter(noclasses=INLINESTYLES, linenos=True),
  }
  
  
  class Pygments(Directive):
      """ Source code syntax hightlighting.
      """
      required_arguments = 1
      optional_arguments = 0
      final_argument_whitespace = True
      option_spec = dict([(key, directives.flag) for key in VARIANTS])
      has_content = True
  
      def run(self):
          self.assert_has_content()
          try:
              lexer = get_lexer_by_name(self.arguments[0])
          except ValueError:
              # no lexer found - use the text one instead of an exception
              lexer = TextLexer()
          # take an arbitrary option if more than one is given
          formatter = self.options and VARIANTS[self.options.keys()[0]] \
                      or DEFAULT
          parsed = highlight(u'\n'.join(self.content), lexer, formatter)
          return [nodes.raw('', parsed, format='html')]
  
  directives.register_directive('code-block', Pygments)
  
subject: Add a directives file for pygments support.