File: lexers.py

package info (click to toggle)
ipython 1.2.1-2~bpo70%2B1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy-backports
  • size: 22,884 kB
  • sloc: python: 67,305; makefile: 469; lisp: 272; sh: 251
file content (46 lines) | stat: -rw-r--r-- 1,775 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
"""A custom pygments lexer for IPython code cells.

Informs The pygments highlighting library of the quirks of IPython's superset
of Python -- magic commands, !shell commands, etc.
"""
#-----------------------------------------------------------------------------
# Copyright (c) 2013, the IPython Development Team.
#
# Distributed under the terms of the Modified BSD License.
#
# The full license is in the file COPYING.txt, distributed with this software.
#-----------------------------------------------------------------------------

#-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------

# Third-party imports
from pygments.lexers import PythonLexer, BashLexer
from pygments.lexer import bygroups, using
from pygments.token import Keyword, Operator, Text

#-----------------------------------------------------------------------------
# Class declarations
#-----------------------------------------------------------------------------

class IPythonLexer(PythonLexer):
    """
    Pygments Lexer for use with IPython code.  Inherits from 
    PythonLexer and adds information about IPython specific
    keywords (i.e. magic commands, shell commands, etc.)
    """
    
    #Basic properties
    name = 'IPython'
    aliases = ['ip', 'ipython']
    filenames = ['*.ipy']
    
    #Highlighting information
    tokens = PythonLexer.tokens.copy()
    tokens['root'] = [
        (r'(\%+)(\w+)\s+(\.*)(\n)', bygroups(Operator, Keyword,
                                             using(BashLexer), Text)),
        (r'(\%+)(\w+)\b', bygroups(Operator, Keyword)),
        (r'^(!)(.+)(\n)', bygroups(Operator, using(BashLexer), Text)),
        ] + tokens['root']