Rendering Configuration

Settings

For practical customization, see Customize Generated Notices.

The required [rendering] section configures generated headers. The main configuration includes tool/conf/misc/rendering.elcl, which contains an empty section and commented examples. Validation supplies these defaults:

[rendering]
copyright_line: "Copyright (c) ${var:year} Tobias Erbsland - https://erbsland.dev"
license_line: "SPDX-License-Identifier: Apache-2.0"

Expansion and Validation

The application captures the current UTC year once at startup and exposes it as ${var:year}. Core’s ELCL parser expands placeholders in configuration text and included files before validation. Validation rules supply omitted settings automatically, with the copyright default using the captured UTC year. Expanded headers must be nonempty single-line text; unknown rendering settings and placeholder errors fail before command execution.

Templates add their own comment prefixes and have globals current_year, copyright_line, and license_line. Local rendering context values override these globals.

Environment Variables and Filters

Built-in variable and environment sources and all text filters are enabled. Use ${env:NAME} for an environment variable; an absent value expands to undefined. ${env:NAME,required} reports an absent variable as a parser error. Filters follow the source with |, for example ${env:OWNER,required|trim|upper:ascii}.

The built-in filters include safe, trim, slice, remove, replace, escape, if, error_if, default, required, lower, and upper. See Using Built-in Placeholder Sources and Transforming Placeholder Text with Built-in Filters for parameters.

Literal Placeholders

Within ELCL quoted text, escape the dollar sign as \${var:year} to retain the literal placeholder text. ELCL handles that escape before placeholder expansion. Ordinary ELCL escapes still apply.

Reproducible Output

The default lower and upper modes and explicit :unicode modes depend on linked Core’s Unicode tables. lower:ascii and upper:ascii do not. Defaults use no Unicode-sensitive transformations. For reproducibility, keep the captured year, environment, and resolved configuration constant.

Source manifests are read without placeholder providers and retain literal text. For the C++ rendering interface, see Template Rendering.