Reference

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.rb
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.text
client.py
client = 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)
client.js
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 }
end

Any language#

No allowlist — Rouge's full registry (~200 lexers).

main.go
package main

import "fmt"

func main() { fmt.Println("go works") }
main.rs
fn main() {
    println!("rust works");
}
demo.ex
defmodule Demo do
  def hello, do: IO.puts("elixir works")
end

Configuring 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:

config/initializers/docs_kit.rb
DocsKit.configure do |c|
  c.code_lexer_aliases   = { curl: "console" }
  c.code_language_labels = { elixir: "Elixir" }
end

Now DocsUI::Code(src, lexer: :curl) highlights with the console lexer. An unknown lexer falls back to code_lexer_fallback (plaintext) instead of raising.

OptionPurpose
code_lexer_aliasesMap friendly names onto real Rouge lexers, e.g. { curl: "console" }. Merged over the built-in aliases.
code_lexer_fallbackLexer used when a requested name is unknown. Defaults to "plaintext" — no highlighting, no error.
code_language_labelsOverride the tab caption per language in DocsUI::Example, e.g. { elixir: "Elixir" }.
Aliases and labels are optional — every Rouge lexer already works by name. Reach for these only to rename a lexer (curl → console) or polish a tab caption.