lua-env Example
Quarto Extension
Introduction
lua-env is an extension for Quarto to provide access to LUA objects as metadata.
This extension gives you access to the quarto object and several Pandoc LUA internal objects using shortcodes.
Installation
quarto add mcanouil/quarto-lua-env@1.5.0This will install the extension under the _extensions subdirectory.
If you’re using version control, you will want to check in this directory.
Usage
Add the following to your YAML header:
Old (<1.8.21):
filters: - quarto - lua-envNew (>=1.8.21):
filters: - path: lua-env at: post-quarto
This enables access to LUA objects using two shortcode formats:
/home/runner/work/quarto-lua-env/quarto-lua-env/example.qmd- Direct access via shortcode./home/runner/work/quarto-lua-env/quarto-lua-env/example.qmd- Access via metadata.
Available LUA Objects
The following LUA objects are available as metadata:
lua-env:
quarto: "quarto"
pandoc:
PANDOC_STATE: "PANDOC_STATE"
FORMAT: "FORMAT"
PANDOC_READER_OPTIONS: "PANDOC_READER_OPTIONS"
PANDOC_WRITER_OPTIONS: "PANDOC_WRITER_OPTIONS"
PANDOC_VERSION: "PANDOC_VERSION"
PANDOC_API_VERSION: "PANDOC_API_VERSION"
PANDOC_SCRIPT_FILE: "PANDOC_SCRIPT_FILE"See Pandoc LUA API - Global Variables for more information about Pandoc global variables.
Shortcodes
Quarto
{{< lua-env quarto.doc.input_file >}}/home/runner/work/quarto-lua-env/quarto-lua-env/example.qmd
{{< meta lua-env.quarto.doc.input_file >}}/home/runner/work/quarto-lua-env/quarto-lua-env/example.qmd
Pandoc
{{< lua-env pandoc.PANDOC_VERSION >}}3.8.3
{{< meta lua-env.pandoc.PANDOC_VERSION >}}3.8.3
{{< lua-env pandoc.FORMAT >}}html
{{< meta lua-env.pandoc.FORMAT >}}html
JSON Export
This document is configured to export the lua-env metadata to a JSON file, with the quarto._quarto branch removed and sensitive filesystem paths redacted.
extensions:
lua-env:
json: true
json-exclude:
- quarto._quarto
json-exclude-sensitive: true
json-warn-on-server: trueBy default, no JSON file is written (json: false). To enable JSON export, set json: true (writes to lua-env.json) or provide a custom file path.
JSON export schema
The exported JSON is an object with two top-level keys, pandoc and quarto.
{
"pandoc": {
"FORMAT": "html",
"PANDOC_API_VERSION": "1.23",
"PANDOC_VERSION": "3.6.3",
"PANDOC_READER_OPTIONS": { },
"PANDOC_WRITER_OPTIONS": { },
"PANDOC_STATE": { }
},
"quarto": {
"version": [1, 7, 32],
"doc": { },
"project": { },
"log": { },
"json": { }
}
}Container shapes mirror the live Pandoc/Quarto objects. Functions and userdata are dropped. Empty branches are omitted.
Filtering options
json-include: array of dot-separated paths to keep (e.g.pandoc.FORMAT). Everything outside the listed paths is omitted.json-exclude: array of dot-separated paths to drop, applied after the include whitelist.json-exclude-sensitive(defaulttrue): redacts built-in sensitive paths that expose host filesystem layout, namelyquarto.doc.input_file,quarto.doc.output_file,quarto.project.directory,quarto.project.output_directory, andpandoc.PANDOC_SCRIPT_FILE. Set tofalseto include them.json-warn-on-server(defaulttrue): emits a warning when JSON export is enabled in a CI or server context (CI,GITHUB_ACTIONS,GITLAB_CI,CIRCLECI,TRAVIS,JENKINS_URL,BUILDKITE,TF_BUILD). Set tofalseto silence.
For example, to export only the active Pandoc format and Quarto version:
extensions:
lua-env:
json: true
json-include:
- pandoc.FORMAT
- quarto.versionTo remove a noisy branch while keeping everything else:
extensions:
lua-env:
json: true
json-exclude:
- quarto._quartoTo use a custom output filename:
extensions:
lua-env:
json: "custom-output.json"