| #!/usr/bin/env python3 |
| # Copyright lowRISC contributors. |
| # Licensed under the Apache License, Version 2.0, see LICENSE for details. |
| # SPDX-License-Identifier: Apache-2.0 |
| """mdbook preprocessor for wavejson code-blocks. |
| |
| It surrounds wavejson code-blocks with script tags of type WaveDrom. |
| """ |
| |
| import json |
| import sys |
| import re |
| |
| from mdbook import utils as md_utils |
| |
| WAVEJSON_PATTERN = re.compile("```wavejson\n(.+?)\n```", re.DOTALL) |
| WAVEJSON_REPLACE = r'<script type="WaveDrom">\1</script>' |
| |
| |
| def main() -> None: |
| if len(sys.argv) > 2: |
| if (sys.argv[1], sys.argv[2]) == ("supports", "html"): |
| sys.exit(0) |
| else: |
| sys.exit(1) |
| |
| # load both the context and the book from stdin |
| context, book = json.load(sys.stdin) |
| |
| for chapter in md_utils.chapters(book["sections"]): |
| chapter["content"] = \ |
| WAVEJSON_PATTERN.sub(WAVEJSON_REPLACE, chapter["content"]) |
| |
| # dump the book into stdout |
| print(json.dumps(book)) |
| |
| |
| if __name__ == "__main__": |
| main() |