refactor(config): replace array preset syntax with preset_name = true (#3)

* refactor(config): replace array preset syntax with preset_name = true

Problem: setup() mixed array entries (preset names) and hash entries
(custom providers keyed by filetype), requiring verbose
vim.tbl_deep_extend boilerplate to override presets.

Solution: unify under a single key=value model. Keys are preset names
or filetypes; true registers the preset as-is, a table deep-merges
with the matching preset (or registers a custom provider if no preset
matches), and false is a no-op. Array entries are dropped. Also adds
-f gfm to presets.github args so pandoc parses input as GFM.

* ci: format

* fix(presets): parenthesize gsub output to suppress redundant-return-value
This commit is contained in:
Barrett Ruth 2026-03-03 00:25:49 -05:00 committed by GitHub
parent 673573044f
commit 2d212aa220
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 73 additions and 56 deletions

View file

@ -22,7 +22,7 @@ describe('preview', function()
assert.are.same({}, config.providers)
end)
it('accepts full provider config via hash entry', function()
it('merges override table with matching preset', function()
helpers.reset_config({
typst = {
cmd = { 'typst', 'compile' },
@ -33,8 +33,8 @@ describe('preview', function()
assert.is_not_nil(config.providers.typst)
end)
it('resolves array preset names to provider configs', function()
helpers.reset_config({ 'typst', 'markdown' })
it('resolves preset = true to provider config', function()
helpers.reset_config({ typst = true, markdown = true })
local config = require('preview').get_config()
local presets = require('preview.presets')
assert.are.same(presets.typst, config.providers.typst)
@ -42,14 +42,14 @@ describe('preview', function()
end)
it('resolves latex preset under tex filetype', function()
helpers.reset_config({ 'latex' })
helpers.reset_config({ latex = true })
local config = require('preview').get_config()
local presets = require('preview.presets')
assert.are.same(presets.latex, config.providers.tex)
end)
it('resolves github preset under markdown filetype', function()
helpers.reset_config({ 'github' })
helpers.reset_config({ github = true })
local config = require('preview').get_config()
local presets = require('preview.presets')
assert.are.same(presets.github, config.providers.markdown)
@ -59,7 +59,7 @@ describe('preview', function()
describe('resolve_provider', function()
before_each(function()
helpers.reset_config({
typst = { cmd = { 'typst', 'compile' } },
typst = true,
})
preview = require('preview')
end)