[runtime/docs] Add custom lexer for shell sessions in runtime wiki.
This was missing from the previous wiki related commit.
TBR=aam@google.com
Change-Id: Ib68ead3bab2841bb8e02cb93fd71bce7515ff335
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/134285
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
diff --git a/runtime/tools/wiki/CustomShellSessionPygmentsLexer/custom_shell_session/__init__.py b/runtime/tools/wiki/CustomShellSessionPygmentsLexer/custom_shell_session/__init__.py
new file mode 100644
index 0000000..58baf98
--- /dev/null
+++ b/runtime/tools/wiki/CustomShellSessionPygmentsLexer/custom_shell_session/__init__.py
@@ -0,0 +1,5 @@
+#
+# Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+# for details. All rights reserved. Use of this source code is governed by a
+# BSD-style license that can be found in the LICENSE file.
+#
diff --git a/runtime/tools/wiki/CustomShellSessionPygmentsLexer/custom_shell_session/lexer.py b/runtime/tools/wiki/CustomShellSessionPygmentsLexer/custom_shell_session/lexer.py
new file mode 100644
index 0000000..3e1e635
--- /dev/null
+++ b/runtime/tools/wiki/CustomShellSessionPygmentsLexer/custom_shell_session/lexer.py
@@ -0,0 +1,49 @@
+#
+# Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+# for details. All rights reserved. Use of this source code is governed by a
+# BSD-style license that can be found in the LICENSE file.
+#
+"""Simple lexer for shell sessions.
+
+Highlights command lines (lines starting with $ prompt) and comments starting
+with #. For example:
+
+ # This is a comment
+ $ this-is-a-command
+ This is output of the command
+
+ $ this-is-a-multiline-command with-some-arguments \
+ and more arguments \
+ and more arguments
+ And some output.
+
+"""
+
+from pygments.lexer import RegexLexer, words
+from pygments.token import Comment, Generic, Keyword
+
+_comment_style = Comment
+# Note: there is a slight inversion of styles to make it easier to read.
+# We highlight output with Prompt style and command as a normal text.
+_output_style = Generic.Prompt
+_command_style = Generic.Text
+_prompt_style = Keyword
+
+
+class CustomShellSessionLexer(RegexLexer):
+ name = 'CustomShellSession'
+ aliases = ['custom-shell-session']
+ filenames = ['*.log']
+ tokens = {
+ 'root': [
+ (r'#.*\n', _comment_style),
+ (r'^\$', _prompt_style, 'command'),
+ (r'.', _output_style),
+ ],
+ 'command': [
+ (r'\\\n', _command_style), # Continue in 'command' state.
+ (r'$', _command_style, '#pop'), # End of line without escape.
+ (r'.',
+ _command_style), # Anything else continue in 'command' state.
+ ]
+ }
diff --git a/runtime/tools/wiki/CustomShellSessionPygmentsLexer/setup.py b/runtime/tools/wiki/CustomShellSessionPygmentsLexer/setup.py
new file mode 100644
index 0000000..b00ade9
--- /dev/null
+++ b/runtime/tools/wiki/CustomShellSessionPygmentsLexer/setup.py
@@ -0,0 +1,15 @@
+#
+# Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+# for details. All rights reserved. Use of this source code is governed by a
+# BSD-style license that can be found in the LICENSE file.
+#
+from setuptools import setup, find_packages
+
+setup(
+ name='custom-shell-session',
+ packages=find_packages(),
+ entry_points="""
+ [pygments.lexers]
+ custom-shell-session = custom_shell_session.lexer:CustomShellSessionLexer
+ """,
+)
diff --git a/runtime/tools/wiki/README.md b/runtime/tools/wiki/README.md
index a81d26ff..2606ac8 100644
--- a/runtime/tools/wiki/README.md
+++ b/runtime/tools/wiki/README.md
@@ -32,6 +32,11 @@
```console
$ pip3 install coloredlogs jinja2 markdown aiohttp watchdog pymdown-extensions pygments
```
-2. Install SASS compiler (make sure that SASS binary is in your path).
-3. Generate `xref.json` file following instructions in
+2. Install the custom pygments lexer we use for shell session examples:
+ ```
+ $ cd runtime/tools/wiki/CustomShellSessionPygmentsLexer
+ $ python3 setup.py develop
+ ```
+3. Install SASS compiler (make sure that SASS binary is in your path).
+4. Generate `xref.json` file following instructions in
`xref_extractor/README.md`.
\ No newline at end of file