1111# not import time, when it may not be needed.
1212
1313from IPython .nbconvert .utils .base import NbConvertBase
14+ from warnings import warn
1415
1516MULTILINE_OUTPUTS = ['text' , 'html' , 'svg' , 'latex' , 'javascript' , 'json' ]
1617
2021]
2122
2223class Highlight2HTML (NbConvertBase ):
24+ def __init__ (self , pygments_lexer = None , ** kwargs ):
25+ self .pygments_lexer = pygments_lexer or 'ipython3'
26+ super (Highlight2HTML , self ).__init__ (** kwargs )
27+
28+ def _default_language_changed (self , name , old , new ):
29+ warn ('Setting default_language in config is deprecated, '
30+ 'please use kernelspecs instead.' )
31+ self .pygments_lexer = new
2332
2433 def __call__ (self , source , language = None , metadata = None ):
2534 """
@@ -35,8 +44,9 @@ def __call__(self, source, language=None, metadata=None):
3544 metadata of the cell to highlight
3645 """
3746 from pygments .formatters import HtmlFormatter
47+
3848 if not language :
39- language = self .default_language
49+ language = self .pygments_lexer
4050
4151 return _pygments_highlight (source if len (source ) > 0 else ' ' ,
4252 # needed to help post processors:
@@ -45,6 +55,14 @@ def __call__(self, source, language=None, metadata=None):
4555
4656
4757class Highlight2Latex (NbConvertBase ):
58+ def __init__ (self , pygments_lexer = None , ** kwargs ):
59+ self .pygments_lexer = pygments_lexer or 'ipython3'
60+ super (Highlight2Latex , self ).__init__ (** kwargs )
61+
62+ def _default_language_changed (self , name , old , new ):
63+ warn ('Setting default_language in config is deprecated, '
64+ 'please use kernelspecs instead.' )
65+ self .pygments_lexer = new
4866
4967 def __call__ (self , source , language = None , metadata = None , strip_verbatim = False ):
5068 """
@@ -63,7 +81,7 @@ def __call__(self, source, language=None, metadata=None, strip_verbatim=False):
6381 """
6482 from pygments .formatters import LatexFormatter
6583 if not language :
66- language = self .default_language
84+ language = self .pygments_lexer
6785
6886 latex = _pygments_highlight (source , LatexFormatter (), language , metadata )
6987 if strip_verbatim :
@@ -90,7 +108,8 @@ def _pygments_highlight(source, output_formatter, language='ipython', metadata=N
90108 """
91109 from pygments import highlight
92110 from pygments .lexers import get_lexer_by_name
93- from IPython .nbconvert .utils .lexers import IPythonLexer
111+ from pygments .util import ClassNotFound
112+ from IPython .nbconvert .utils .lexers import IPythonLexer , IPython3Lexer
94113
95114 # If the cell uses a magic extension language,
96115 # use the magic language instead.
@@ -100,9 +119,17 @@ def _pygments_highlight(source, output_formatter, language='ipython', metadata=N
100119
101120 language = metadata ['magics_language' ]
102121
103- if language == 'ipython ' :
122+ if language == 'ipython2 ' :
104123 lexer = IPythonLexer ()
124+ elif language == 'ipython3' :
125+ lexer = IPython3Lexer ()
105126 else :
106- lexer = get_lexer_by_name (language , stripall = True )
127+ try :
128+ lexer = get_lexer_by_name (language , stripall = True )
129+ except ClassNotFound :
130+ warn ("No lexer found for language %r. Treating as plain text." % language )
131+ from pygments .lexers .special import TextLexer
132+ lexer = TextLexer ()
133+
107134
108135 return highlight (source , lexer , output_formatter )
0 commit comments