JupyterLab Pygments: Comprehensive Guide for Developers
JupyterLab Pygments is a syntax highlighting tool tailored for Jupyter Notebooks, empowering developers to render code snippets with clear and consistent styling. Built on top of the popular Pygments library, this package provides robust integration for creating visually appealing and readable outputs in JupyterLab.
What is JupyterLab Pygments?
JupyterLab Pygments is a library designed as a highlighter specifically intended for producing notebook-style output using Pygments, the universal code highlighter. It maintains syntax accuracy across a wide variety of programming languages and can be used with both Jupyter Notebooks and other frontend environments.
Key Features of JupyterLab Pygments
- Powered by the robust Pygments library, supporting 500+ languages.
- Designed to mimic the appearance of code in Jupyter Notebooks.
- Customizable highlighting styles for seamless integration across projects.
API Guide With Examples
Importing the Library
To begin using JupyterLab Pygments, import the core library functions:
from jupyterlab_pygments import JupyterStyle
from pygments.formatters import HtmlFormatter
from pygments import highlight
from pygments.lexers import PythonLexer
Syntax Highlighting for Python Code
Here’s how you can highlight Python code using JupyterLab Pygments:
code = "def hello_world():\n print('Hello, world!')"
formatter = HtmlFormatter(style=JupyterStyle)
highlighted_code = highlight(code, PythonLexer(), formatter)
print(highlighted_code)
Using Custom Styles
JupyterLab Pygments allows for customization of styles to match your theme preferences:
from pygments.styles import get_all_styles
custom_style = JupyterStyle
# List all supported styles
available_styles = list(get_all_styles())
print("Supported styles:", available_styles)
formatter = HtmlFormatter(style=custom_style)
highlighted_code = highlight(code, PythonLexer(), formatter)
Rendering Multiple Languages
You can render code snippets from different languages easily:
from pygments.lexers import get_lexer_by_name
languages = ['python', 'javascript', 'html']
code_snippets = [
"def greet():\n return 'hello'",
"const greet = () => 'hello';",
"<html><body>Hello</body></html>"
]
for lang, snippet in zip(languages, code_snippets):
lexer = get_lexer_by_name(lang)
formatter = HtmlFormatter(style=JupyterStyle)
highlighted = highlight(snippet, lexer, formatter)
print(highlighted)
Building an Application With JupyterLab Pygments
Below is a simple demo application that uses the library to render and display syntax-highlighted code along with user-selected styles.
from flask import Flask, render_template_string, request
from pygments import highlight
from pygments.lexers import PythonLexer
from pygments.formatters import HtmlFormatter
from jupyterlab_pygments import JupyterStyle
app = Flask(__name__)
TEMPLATE = """
<html>
<body>
<h1>Syntax Highlighter Demo</h1>
<form method="POST">
<textarea name="code" rows="10" cols="50">{{ code }}</textarea>
<br>
<button type="submit">Highlight Code</button>
</form>
<h2>Highlighted Output:</h2>
<div>{{ highlighted_code|safe }}</div>
</body>
</html>
"""
@app.route("/", methods=["GET", "POST"])
def index():
code = ""
highlighted_code = ""
if request.method == "POST":
code = request.form.get("code", "")
formatter = HtmlFormatter(style=JupyterStyle)
highlighted_code = highlight(code, PythonLexer(), formatter)
return render_template_string(TEMPLATE, code=code, highlighted_code=highlighted_code)
if __name__ == "__main__":
app.run(debug=True)
Conclusion
JupyterLab Pygments is a powerful tool for anyone looking to render syntax-highlighted code seamlessly in Jupyter or other environments. Combined with Pygments, it offers complete flexibility and wide language support. Try out the APIs and explore customizations to elevate your projects!