Code languages
Any language Rouge knows works. Multi-language examples remember your choice.
Multi-language examples#
Pick a tab — every example on the page follows.
DocsUI::Example renders one example in several languages with tabs. The choice is a global sticky preference — persisted in localStorage and synced across every example group on the page and across pages. Switch Ruby → Python once and it sticks everywhere.
client = Anthropic::Client.new(api_key: ENV["ANTHROPIC_API_KEY"])
msg = client.messages.create(
model: "claude-opus-4-8",
max_tokens: 1024,
messages: [{ role: "user", content: "Hello" }]
)
puts msg.content.first.textclient = anthropic.Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"])
msg = client.messages.create(
model="claude-opus-4-8",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello"}],
)
print(msg.content[0].text)const client = new Anthropic({ apiKey: process.env.ANTHROPIC_API_KEY });
const msg = await client.messages.create({
model: "claude-opus-4-8",
max_tokens: 1024,
messages: [{ role: "user", content: "Hello" }],
});
console.log(msg.content[0].text);Author it by handing each language a code block:
example do |ex|
ex.code(:ruby, filename: "client.rb") { ruby_source }
ex.code(:python, filename: "client.py") { python_source }
ex.code(:javascript) { js_source }
endAny language#
No allowlist — Rouge's full registry (~200 lexers).
package main
import "fmt"
func main() { fmt.Println("go works") }fn main() {
println!("rust works");
}defmodule Demo do
def hello, do: IO.puts("elixir works")
endConfiguring languages#
Pass any Rouge lexer name to lexer: directly. Register aliases to map a custom name onto a real lexer, and labels to control the tab caption an example shows:
DocsKit.configure do |c|
c.code_lexer_aliases = { curl: "console" }
c.code_language_labels = { elixir: "Elixir" }
endNow DocsUI::Code(src, lexer: :curl) highlights with the console lexer. An unknown lexer falls back to code_lexer_fallback (plaintext) instead of raising.
| Option | Purpose |
|---|---|
code_lexer_aliases | Map friendly names onto real Rouge lexers, e.g. { curl: "console" }. Merged over the built-in aliases. |
code_lexer_fallback | Lexer used when a requested name is unknown. Defaults to "plaintext" — no highlighting, no error. |
code_language_labels | Override the tab caption per language in DocsUI::Example, e.g. { elixir: "Elixir" }. |