# Configuration URL: /docs/reference/configuration/ Section: reference Tags: configuration, reference -------------------------------------------------------------------------------- # Configuration Rosettes uses immutable dataclasses for configuration. All configuration is optional—sensible defaults are provided. ## FormatConfig Configuration for HTML output formatting. ```python from dataclasses import dataclass @dataclass(frozen=True) class FormatConfig: css_class: str = "rosettes" data_language: str = "" ``` ### Fields | Field | Type | Default | Description | |-------|------|---------|-------------| | `css_class` | `str` | `"rosettes"` | Container `
` CSS class | | `data_language` | `str` | `""` | Value for `data-language` attribute | ### Example ```python from rosettes.formatters import HtmlFormatter from rosettes import get_lexer, FormatConfig lexer = get_lexer("python") formatter = HtmlFormatter() config = FormatConfig( css_class="my-code-block", data_language="python", ) tokens = lexer.tokenize("x = 1") html = formatter.format_string(tokens, config) #
... ``` --- ## HighlightConfig Configuration for line highlighting and line numbers. ```python from dataclasses import dataclass @dataclass(frozen=True) class HighlightConfig: hl_lines: frozenset[int] = frozenset() show_linenos: bool = False css_class: str = "rosettes" ``` ### Fields | Field | Type | Default | Description | |-------|------|---------|-------------| | `hl_lines` | `frozenset[int]` | `frozenset()` | 1-based line numbers to highlight | | `show_linenos` | `bool` | `False` | Include line numbers in output | | `css_class` | `str` | `"rosettes"` | Container CSS class | ### Example ```python from rosettes import HighlightConfig from rosettes.formatters import HtmlFormatter config = HighlightConfig( hl_lines=frozenset({2, 3}), show_linenos=True, ) formatter = HtmlFormatter(config=config) ``` --- ## LexerConfig Configuration for lexer behavior (rarely needed). ```python from dataclasses import dataclass @dataclass(frozen=True) class LexerConfig: pass # Reserved for future lexer options ``` Currently empty—reserved for future lexer-specific options. --- ## High-Level API Defaults The `highlight()` function uses these defaults: | Parameter | Default | Derived From | |-----------|---------|--------------| | `css_class` | `"rosettes"` (semantic) or `"highlight"` (pygments) | `css_class_style` | | `css_class_style` | `"semantic"` | | | `show_linenos` | `False` | | | `hl_lines` | `None` | | ```python # These are equivalent highlight(code, "python") highlight( code, "python", hl_lines=None, show_linenos=False, css_class=None, # Auto: "rosettes" css_class_style="semantic", ) ``` --- ## Immutability All configuration classes are frozen dataclasses: ```python from rosettes import FormatConfig config = FormatConfig(css_class="code") # This raises FrozenInstanceError config.css_class = "other" # ❌ Error # Create a new instance instead new_config = FormatConfig(css_class="other") # ✅ ``` This immutability ensures thread safety. --- ## Environment Variables Rosettes does not read environment variables. All configuration is explicit through function parameters or configuration classes. For build-time configuration in static site generators, pass options through your build system: ```python import os from rosettes import highlight CSS_STYLE = os.getenv("ROSETTES_CSS_STYLE", "semantic") def highlight_code(code: str, language: str) -> str: return highlight(code, language, css_class_style=CSS_STYLE) ``` -------------------------------------------------------------------------------- Metadata: - Word Count: 414 - Reading Time: 2 minutes