aboutsummaryrefslogtreecommitdiff
path: root/pandoc-lua-engine/src
AgeCommit message (Collapse)Author
12 daysLua: add function `pandoc.utils.documentation` (#11383)Albert Krewinkel
Closes #10999. This is now used to generate much of the Lua API documentation.
2026-01-08Lua: switch to HsLua 2.5Albert Krewinkel
2026-01-05Lua: let `pandoc.with_state` error on unknown optionsAlbert Krewinkel
Unknown or unsupported options now cause the `pandoc.with_state` function to fail. Closes: #11376
2026-01-02Lua: add function `pandoc.with_state`Albert Krewinkel
The function allows to run a callback with a modified pandoc state. This provides the ability to temporarily modify the resource path, the user data directory, and the HTTP request headers. Closes: #10859
2026-01-02Lua: support equallity checks of LogMessage objectsAlbert Krewinkel
The *LogMessage* type now has the appropriate metamethod.
2025-12-31Lua: mark readers and writers with their types.Albert Krewinkel
The `pandoc.readers` and `pandoc.writers` maps now have string values instead of boolean values. The string signals the type of the reader/writer, `"text"` for *TextReader*/*TextWriter* and `"bytestring"` for *ByteStringReader*/*ByteStringWriter*. Closes: #11367
2025-11-19Lua: preserve common state of custom Lua readersAlbert Krewinkel
The common state is transferred to Lua when calling a custom Lua reader, and is now also transferred back after the reader has finished. This ensures that info messages, warnings, and mediabag entries are available to the main program and all subsequent processing steps.
2025-09-02Refactor highlighting options [API Change]Albert Krewinkel
A new command line option `--syntax-highlighting` is provided; it takes the values `none`, `default`, `idiomatic`, a style name, or a path to a theme file. It replaces the `--no-highlighting`, `--highlighting-style`, and `--listings` options. The `writerListings` and `writerHighlightStyle` fields of the `WriterOptions` type are replaced with `writerHighlightStyle`. Closes: #10525
2025-08-12Lua: add function `pandoc.structure.unique_identifier`.Albert Krewinkel
The function generates element identifiers based on inlines content. It's primary use case is the programmatic generation of ID, similar to what the `auto_identifiers` extension provides for many formats.
2025-08-12Lua: add functions `pandoc.text.superscript` and `subscript`.Albert Krewinkel
The functions convert numbers and parentheses to superscript and subscript, respectively.
2025-08-01Lua: use proper interface functions to access the CommonState.Albert Krewinkel
- The `PANDOC_STATE` is no longer a userdata object, but a table that behaves like the old object. - Log messages in `PANDOC_STATE.log` are now in temporal order.
2025-07-23Lua: add function `pandoc.path.exists`.Albert Krewinkel
The functions allows to check the existence of file-system objects.
2025-06-30Lua: add more UTF-8-aware file operations to `pandoc.system`.Albert Krewinkel
Functions that expect UTF-8-encoded filenames should make it easier to write platform-independent scripts, as the encoding of the actual filename depends on the system. Additionally, this also adds a generalized method to run commands, and functions to retrieve XDG directory names. The new functions are `command`, `copy`, `read_file`, `remove`, `rename`, `times`, `write_file`, `xdg`.
2025-05-28doc/lua-filters.md: add missing docs for `pandoc.Caption`Albert Krewinkel
2025-05-28Lua: add function `pandoc.mediabag.make_data_uri`.Albert Krewinkel
The function takes a MIME type and raw data from which it creates an RFC 2397 data URI. Closes: #10876
2025-05-14Lua: accept filename-contents pairs as env for `pandoc.read`Albert Krewinkel
Key-value pairs, mapping from filename to contents, can be used to fill the ersatz file system used in the reader sandbox.
2025-05-14Lua: allow to pass files to the `pandoc.read` sandboxAlbert Krewinkel
The sandbox is now enabled if the fourth parameter is a list of files. The files are read and then made available in the sandbox via a mock file system.
2025-05-13Lua: support sandboxed parsing with `pandoc.read`.Albert Krewinkel
The function `pandoc.read` is now taking an optional fourth parameter that specifies the environment in which the parser will be run. Passing the string `sandbox` as the argument causes the reader to run in a sandbox, thereby preventing all access to the network and file system. Closes: #10831
2024-12-10Lua: support more elements as input to `pandoc.utils.stringify`.Albert Krewinkel
Elements of type Caption, Cell, TableHead, and TableFoot can now be stringified. Fixes: #10450
2024-12-10Lua: add `Caption` constructor to `pandoc` module.Albert Krewinkel
2024-11-06Fix typos (#10349)Andreas Deininger
2024-10-14Lua: Remove prefixes from Lua type namesAlbert Krewinkel
Lua type names were inconsistent with regard to the use of prefixes; all prefixes are removed now, and Lua types now have the same name as the Haskell types. The use of app-specific prefixes is suggested by the Lua manual to avoid collisions. However, this shouldn't be a problem with pandoc, as it cannot be used as a Lua package. Closes: #8574
2024-10-01doc/lua-filters.md: list functions in `pandoc.utils` alphabeticallyAlbert Krewinkel
2024-10-01Lua: allow returning a single filter from filter filesAlbert Krewinkel
It is now possible to return a single filter from a filter file, e.g. ``` lua -- Switch single- and double quotes return { Quoted = function (q) elem.quotetype = elem.quotetype == 'SingleQuote' and 'DoubleQuote' or 'SingleQuote' return elem end } The filter must not contain numerical indexes, or it might be treated as a list of filters.
2024-09-29Stop depending on package SHAAlbert Krewinkel
Pandoc already depends on `crypton-conntection`, and thus transitively on `crypton`. The latter provides a vast variety of hashing algorithms and makes the dependency on SHA unnecessary.
2024-09-22Add support for list of figures (lof) and list of tables (lot) (#10029)Akash Patel
Two new command-line options are added: `--lof[=true|false]`, `--list-of-figures[=true|false]` `--lot[=true|false]`, `--list-of-tables[=true|false]` Only docx, latex, and context are supported at this point. Setting the `lof` and `lot` variables will also work for the formats that are currently supported. [API changes] + Lua: `list_of_figures` and `list_of_tables` can now be used in writer options. + Text.Pandoc.Options: add `writerListOfFigures` and `writerListOfTables` fields to `WriterOptions`. + Text.Pandoc.App.Opt: add `optListOfFigures` and `optListOfTables` to `Opt`. Closes #8245. Co-authored-by: John MacFarlane <[email protected]>
2024-09-21Lua: support character styling via `pandoc.layout`Albert Krewinkel
The `Doc` values produced and handled by the `pandoc.layout` module can now be styled using `bold`, `italic`, `underlined`, or `strikeout`. The style is ignored in normal rendering, but becomes visible when rendering to ANSI output. The `pandoc.layout.render` function now takes a third parameter that defines the output style, either *plain* or *ansi*.
2024-09-08pandoc-lua-engine: marshall list_tables, epub_title_page writer options.John MacFarlane
2024-09-08Finishing touches on `--link-images`:John MacFarlane
- Document in defaults file section of MANUAL. - Add to pandoc-lua-engine writer option marshalling. - Add to pandoc-server initialization of writer options.
2024-09-08Include accessors for new writer optionsJohn MacFarlane
2024-07-08lua-filters.md: Partially autogenerate docs for module "pandoc"Albert Krewinkel
The documentation system isn't powerful enough to generate the full documentation automatically.
2024-07-08Harmonize maintainer email addresses in module headers.Albert Krewinkel
2024-06-28Lua: keep `lpeg` and `re` as "loaded" modules.Albert Krewinkel
The modules `lpeg` and `re` are now treated as if they had been loaded with `require`. Previously the modules were only assigned to global values, but could be loaded again via `require`, thereby allowing to use a system-wide installation. However, this proved to be confusing. The old behavior can be restored by adding the following lines to the top of Lua scripts, or to the `init.lua` in the data dir. debug.registry()['_LOADED'].lpeg = nil debug.registry()['_LOADED'].re = nil
2024-06-09Lua: split Init module into more modules.Albert Krewinkel
The module has grown unwieldy and is therefore split into three internal Haskell modules, `Init`, `Module`, and `Run`.
2024-06-08Lua: add function `pandoc.template.get`.Albert Krewinkel
The function allows to specify a template with the same argument value that would be used with the `--template` command line parameter. Closes: #9854 Co-authored-by: Carsten Gips <[email protected]>
2024-06-08Update more copyright dates to 2024.Albert Krewinkel
2024-06-08Lua: keep CommonState object in the registryAlbert Krewinkel
The state is an internal value and should be treated as such. The `PANDOC_STATE` global is merely a copy; unsetting the global no longer breaks the Lua engine.
2024-06-07doc/lua-filters: autogenerate docs for module pandoc.templateAlbert Krewinkel
2024-06-07Lua: allow passing an environment to `run_lua_filter`.Albert Krewinkel
The default is now to use a *copy* of the global environment when running a filter; this ensures better separation when `run_lua_filter` is used multiple times. A custom environment can be specified via the optional third parameter.
2024-06-01Lua: Set `pandoc.List` as default metatable for JSON listsAlbert Krewinkel
Lists created by `pandoc.json.decode` now behave like lists generated via `pandoc.List`. This also ensures that `pandoc.List` tables are encoded as JSON arrays when passed to `pandoc.json.encode`. Fixes: #9834
2024-05-28Lua: fix typo in `run_lua_filter`Albert Krewinkel
Fixes previous commit ad68ff34aeb78e26d98a593dfdaf6bc4933857fc.
2024-05-27Lua: add function `pandoc.utils.run_lua_filter` (#9803)Albert Krewinkel
2024-05-10Lua: add a `pandoc.log` module.Albert Krewinkel
2024-05-05Lua: improve `pandoc.json.decode` docs.Albert Krewinkel
2024-05-04Lua: fix generated docs.Albert Krewinkel
Update and fix docs for `pandoc.types.Version` and `pandoc.utils.type`.
2024-04-25Update copyright dates to 2024.John MacFarlane
2024-04-16Lua: add new module `pandoc.image`Albert Krewinkel
The module provides basic querying functions for image properties.
2024-02-20Lua: avoid crashing when an error message is not valid UTF-8Albert Krewinkel
Invalid input bytes in error messages caused pandoc to crash with an encoding exception. Instead, the invalid bytes are now replaced with the Unicode replacement character U+FFFD.
2024-01-29Lua: catch encoding error in `pandoc.read`Albert Krewinkel
Fixed a bug that could lead to an un-catchable error and program termination when `pandoc.read` was called with invalid UTF-8 input. Fixes: #9385
2024-01-20Custom writers: fix handling of common stateAlbert Krewinkel
The CommonState (`PANDOC_STATE` in Lua) may change between the time that a custom writer script is first loaded and when the writer is run. However, the writer was always using the initial state, which led to problems, e.g. when the mediabag was updated in a filter, as those updates where not visible to the writer. The state is now updated right before the writer function runs. Fixes: #9229