Show More
@@ -217,10 +217,8 b' class IPythonConsoleLexer(Lexer):' | |||
|
217 | 217 | aliases = ['ipythoncon'] |
|
218 | 218 | mimetypes = ['text/x-ipython-console'] |
|
219 | 219 | |
|
220 |
# The regexps used to determine what is input and what is output. |
|
|
221 | # input regex should be consistent with and also be the combination of | |
|
222 | # the values of the `in_template` and `in2_templates`. For example, the | |
|
223 | # defaults prompts are: | |
|
220 | # The regexps used to determine what is input and what is output. | |
|
221 | # The default prompts for IPython are: | |
|
224 | 222 | # |
|
225 | 223 | # c.PromptManager.in_template = 'In [\#]: ' |
|
226 | 224 | # c.PromptManager.in2_template = ' .\D.: ' |
@@ -322,11 +320,24 b' class IPythonConsoleLexer(Lexer):' | |||
|
322 | 320 | self.buffer = u'' |
|
323 | 321 | self.insertions = [] |
|
324 | 322 | |
|
325 |
def get_m |
|
|
323 | def get_mci(self, line): | |
|
326 | 324 | """ |
|
327 | Returns the next mode and code to be added to the next mode's buffer. | |
|
325 | Parses the line and returns a 3-tuple: (mode, code, insertion). | |
|
328 | 326 | |
|
329 | The next mode depends on current mode and contents of line. | |
|
327 | `mode` is the next mode (or state) of the lexer, and is always equal | |
|
328 | to 'input', 'output', or 'tb'. | |
|
329 | ||
|
330 | `code` is a portion of the line that should be added to the buffer | |
|
331 | corresponding to the next mode and eventually lexed by another lexer. | |
|
332 | For example, `code` could be Python code if `mode` were 'input'. | |
|
333 | ||
|
334 | `insertion` is a 3-tuple (index, token, text) representing an | |
|
335 | unprocessed "token" that will be inserted into the stream of tokens | |
|
336 | that are created from the buffer once we change modes. This is usually | |
|
337 | the input or output prompt. | |
|
338 | ||
|
339 | In general, the next mode depends on current mode and on the contents | |
|
340 | of `line`. | |
|
330 | 341 | |
|
331 | 342 | """ |
|
332 | 343 | # To reduce the number of regex match checks, we have multiple |
@@ -436,7 +447,7 b' class IPythonConsoleLexer(Lexer):' | |||
|
436 | 447 | self.reset() |
|
437 | 448 | for match in line_re.finditer(text): |
|
438 | 449 | line = match.group() |
|
439 |
mode, code, insertion = self.get_m |
|
|
450 | mode, code, insertion = self.get_mci(line) | |
|
440 | 451 | |
|
441 | 452 | if mode != self.mode: |
|
442 | 453 | # Yield buffered tokens before transitioning to new mode. |
@@ -27,32 +27,36 b' available at :module:`IPython.nbconvert.utils.lexers`. These include:' | |||
|
27 | 27 | Previously, the :class:`IPythonConsoleLexer` class was available at |
|
28 | 28 | :module:`IPython.sphinxext.ipython_console_hightlight`. It was inserted |
|
29 | 29 | into Pygments' list of available lexers under the name `ipython`. It should |
|
30 |
be mentioned that this name is inaccurate |
|
|
30 | be mentioned that this name is inaccurate, since an IPython console session | |
|
31 | 31 | is not the same as IPython code (which itself is a superset of the Python |
|
32 | 32 | language). |
|
33 | 33 | |
|
34 |
Now, the Sphinx extension inserts two console lexers into Pygment |
|
|
35 |
available lexers. |
|
|
36 | `ipython3`. As mentioned above, these names are misleading, but they are kept | |
|
37 | for backwards compatibility and typical usage. If a project needs to make | |
|
38 | Pygments aware of more than just the IPyLexer class, then one should not | |
|
39 | make the IPyLexer class available under the name `ipython` and use `ipy` or | |
|
40 | some other non-conflicting value. | |
|
34 | Now, the Sphinx extension inserts two console lexers into Pygments' list of | |
|
35 | available lexers. Both are IPyLexer instances under the names: `ipython` and | |
|
36 | `ipython3`. Although the names can be confusing (as mentioned above), their | |
|
37 | continued use is, in part, to maintain backwards compatibility and to | |
|
38 | aid typical usage. If a project needs to make Pygments aware of more than just | |
|
39 | the IPyLexer class, then one should not make the IPyLexer class available under | |
|
40 | the name `ipython` and use `ipy` or some other non-conflicting value. | |
|
41 | 41 | |
|
42 |
Code blocks such as: |
|
|
42 | Code blocks such as: | |
|
43 | ||
|
44 | .. code-block:: rst | |
|
43 | 45 | |
|
44 | 46 | .. code-block:: ipython |
|
45 | 47 |
|
|
46 | In [1]: 2**2 | |
|
47 |
|
|
|
48 | In [1]: 2**2 | |
|
49 | Out[1]: 4 | |
|
48 | 50 | |
|
49 | 51 | will continue to work as before, but now, they will also properly highlight |
|
50 |
tracebacks. For pure IPython code, the same lexer will work: |
|
|
52 | tracebacks. For pure IPython code, the same lexer will also work: | |
|
53 | ||
|
54 | .. code-block:: rst | |
|
51 | 55 | |
|
52 | 56 | .. code-block:: ipython |
|
53 | 57 |
|
|
54 | x = ''.join(map(str, range(10))) | |
|
55 |
|
|
|
58 | x = ''.join(map(str, range(10))) | |
|
59 | !echo $x | |
|
56 | 60 | |
|
57 | 61 | Since the first line of the block did not begin with a standard IPython console |
|
58 |
prompt, the entire block is assumed to |
|
|
62 | prompt, the entire block is assumed to consist of IPython code instead. |
General Comments 0
You need to be logged in to leave comments.
Login now