Skip to main content

Zig ANSI syntax highlighting library

Project description

uv Ruff

zig-codeblocks

zig-codeblocks is a CPython 3.10+ library for adding syntax highlighting to Zig code blocks in Markdown files through ANSI escape codes. Originally intended for patching the lack of syntax highlighting for Zig on Discord.

Installation

zig-codeblocks is available on PyPI:

pip install zig-codeblocks

You can also install it from source:

pip install git+https://github.com/trag1c/zig-codeblocks.git

API Reference

extract_codeblocks

def extract_codeblocks(source: str) -> Iterator[Codeblock]

Yields CodeBlocks from a Markdown source.

Example usage:

from pathlib import Path

from zig_codeblocks import extract_codeblocks

source = Path("examples/riiz.md").read_text()
for codeblock in extract_codeblocks(source):
    print(f"Language: {codeblock.lang}")
    print(f"Body:\n{codeblock.body}")
Language: py
Body:
print("Hello, World!")

Language: zig
Body:
const std = @import("std");
pub fn main() !void {
    std.debug.print("Hello, World!\n", .{});
}

highlight_zig_code

def highlight_zig_code(source: str) -> str

Returns an ANSI syntax-highlighted version of the given Zig source code.

Example usage:

from pathlib import Path

from zig_codeblocks import highlight_zig_code

source = Path("examples/hello_world.zig").read_text()
print(highlight_zig_code(source))

process_markdown

def process_markdown(source: str, *, only_code: bool = False) -> str

Returns a Markdown source with Zig code blocks syntax-highlighted. If only_code is True, only processed Zig code blocks will be returned.

Example usage:

from pathlib import Path

from zig_codeblocks import process_markdown

source = Path("examples/riiz.md").read_text()
print(process_markdown(source))

CodeBlock

class CodeBlock(NamedTuple):
    lang: str
    body: str

A code block extracted from a Markdown source.

License

zig-codeblocks is licensed under the MIT License.
© trag1c, 2025

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zig_codeblocks-0.1.2.tar.gz (530.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

zig_codeblocks-0.1.2-py3-none-any.whl (6.7 kB view details)

Uploaded Python 3

File details

Details for the file zig_codeblocks-0.1.2.tar.gz.

File metadata

  • Download URL: zig_codeblocks-0.1.2.tar.gz
  • Upload date:
  • Size: 530.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.5.27

File hashes

Hashes for zig_codeblocks-0.1.2.tar.gz
Algorithm Hash digest
SHA256 5da977852220f0e28db390ec5d7c04008df4d077cea74f13cb961bbc0fece96a
MD5 7065abe30eb924b9b52ac25c571a20be
BLAKE2b-256 6135fab544caa3d7585ae367b264fdce3ea75f2188e117b65120c7c12acd26d1

See more details on using hashes here.

File details

Details for the file zig_codeblocks-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for zig_codeblocks-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 6f850277cf5958e3e07855f045bc84144cc65ebf23136c2de1c704631aaec60b
MD5 7cbf92fbe26b2a0b51474d38cdea24be
BLAKE2b-256 4e87e01c10f3e502d98179078dc33f2c8565c1431bdfedc05f759bbb84d8c054

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page