aboutsummaryrefslogtreecommitdiffstats
path: root/docs/sphinx/qmp_lexer.py
diff options
context:
space:
mode:
authorTimos Ampelikiotis <t.ampelikiotis@virtualopensystems.com>2023-10-10 11:40:56 +0000
committerTimos Ampelikiotis <t.ampelikiotis@virtualopensystems.com>2023-10-10 11:40:56 +0000
commite02cda008591317b1625707ff8e115a4841aa889 (patch)
treeaee302e3cf8b59ec2d32ec481be3d1afddfc8968 /docs/sphinx/qmp_lexer.py
parentcc668e6b7e0ffd8c9d130513d12053cf5eda1d3b (diff)
Introduce Virtio-loopback epsilon release:
Epsilon release introduces a new compatibility layer which make virtio-loopback design to work with QEMU and rust-vmm vhost-user backend without require any changes. Signed-off-by: Timos Ampelikiotis <t.ampelikiotis@virtualopensystems.com> Change-Id: I52e57563e08a7d0bdc002f8e928ee61ba0c53dd9
Diffstat (limited to 'docs/sphinx/qmp_lexer.py')
-rw-r--r--docs/sphinx/qmp_lexer.py43
1 files changed, 43 insertions, 0 deletions
diff --git a/docs/sphinx/qmp_lexer.py b/docs/sphinx/qmp_lexer.py
new file mode 100644
index 000000000..f7e4c0e19
--- /dev/null
+++ b/docs/sphinx/qmp_lexer.py
@@ -0,0 +1,43 @@
+# QEMU Monitor Protocol Lexer Extension
+#
+# Copyright (C) 2019, Red Hat Inc.
+#
+# Authors:
+# Eduardo Habkost <ehabkost@redhat.com>
+# John Snow <jsnow@redhat.com>
+#
+# This work is licensed under the terms of the GNU GPLv2 or later.
+# See the COPYING file in the top-level directory.
+"""qmp_lexer is a Sphinx extension that provides a QMP lexer for code blocks."""
+
+from pygments.lexer import RegexLexer, DelegatingLexer
+from pygments.lexers.data import JsonLexer
+from pygments import token
+from sphinx import errors
+
+class QMPExampleMarkersLexer(RegexLexer):
+ """
+ QMPExampleMarkersLexer lexes QMP example annotations.
+ This lexer adds support for directionality flow and elision indicators.
+ """
+ tokens = {
+ 'root': [
+ (r'-> ', token.Generic.Prompt),
+ (r'<- ', token.Generic.Prompt),
+ (r' ?\.{3} ?', token.Generic.Prompt),
+ ]
+ }
+
+class QMPExampleLexer(DelegatingLexer):
+ """QMPExampleLexer lexes annotated QMP examples."""
+ def __init__(self, **options):
+ super(QMPExampleLexer, self).__init__(JsonLexer, QMPExampleMarkersLexer,
+ token.Error, **options)
+
+def setup(sphinx):
+ """For use by the Sphinx extensions API."""
+ try:
+ sphinx.require_sphinx('2.1')
+ sphinx.add_lexer('QMP', QMPExampleLexer)
+ except errors.VersionRequirementError:
+ sphinx.add_lexer('QMP', QMPExampleLexer())