4.7.0 release
Release blog post: https://soupault.app/blog/soupault-4.7.0-release
New features and improvements
- New
max_items
option in index views allows limiting the number of displayed items. - New
settings.page_character_encoding
option for correctly loading pages in encodings other than ASCII and UTF-8. - New
post-build
hook that runs when all pages are processed and soupault is about to terminate. - Info logs to indicate the first and second passes in the
index_first = true
mode. - Debug logs now tell why a page is included or excluded from an index view:
"page_included checks for %s: regex=%b, page=%b, section=%b"
New plugin API functions
CSV.from_string(str)
— parses CSV data and returns it as a list (i.e., an int-indexed table) of lists.CSV.unsafe_from_string(str)
— likeCSV.from_string
but returnsnil
on errors instead or raising an exception.CSV.to_list_of_tables(csv_data)
— converts CSV data with a header returned byCSV.from_string
into a list of string-indexed tables for easy rendering.HTML.swap(l, r)
— swaps two elements in an element tree.HTML.wrap(node, elem)
— wrapsnode
inelem
.- New
global_data
hash table for sharing data between plugins. - New
soupault_pass
plugin environment variable (0 whenindex_first = false
, 1 and 2 for the first and the second pass respectively when it's true).
Bug fixes
- Fixed an unhandled exception on index entry sorting failures when
sort_strict = true
andsort_by
is unspecified. - Fixed a typo in the comments of the config generated by
soupault --init
(s/ULRs/URLs/).
Misc
New state
record now holds both the settings record and the TOML config datastructure,
plus the new global_data
and soupault_pass
variables, and can be easily extended to support global state new variables.
Official binaries are now available for Linux on ARM64.