text: # Options
  # ~~~~~~~
  
  # Set to True if you want inline CSS styles instead of classes
  INLINESTYLES = True
  
  from pygments.formatters import HtmlFormatter
  
  # The default formatter
  DEFAULT = HtmlFormatter(noclasses=INLINESTYLES)
  
  # Add name -> formatter pairs for every variant you want to use
  VARIANTS = {
       'linenos': HtmlFormatter(noclasses=INLINESTYLES, linenos=True),
  }
  
  
  from docutils import nodes
  from docutils.parsers.rst import directives, Directive
  
  from pygments import highlight
  from pygments.lexers import get_lexer_by_name, TextLexer
  
  
  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('sourcecode', Pygments)
  