Skip to content

Commit 2bacf39

Browse files
committed
Force use of pandoc walk for some filters
1 parent 3803ce1 commit 2bacf39

File tree

5 files changed

+17
-4
lines changed

5 files changed

+17
-4
lines changed

src/resources/filters/ast/customnodes.lua

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ function is_regular_node(node, name)
4141
return node
4242
end
4343

44-
function run_emulated_filter(doc, filter)
44+
function run_emulated_filter(doc, filter, force_use_walk)
4545
if doc == nil then
4646
return nil
4747
end
@@ -73,7 +73,10 @@ function run_emulated_filter(doc, filter)
7373
-- luacov: enable
7474
end
7575
end
76-
return _quarto.modules.jog(node, filter_param)
76+
_QUARTO_USE_WALK = force_use_walk
77+
local result = _quarto.modules.jog(node, filter_param)
78+
_QUARTO_USE_WALK = false
79+
return result
7780
end
7881

7982
-- performance: if filter is empty, do nothing

src/resources/filters/ast/emulatedfilter.lua

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,9 @@ inject_user_filters_at_entry_points = function(filter_list)
6868
end
6969
local filter = {
7070
name = entry_point .. "-user-" .. tostring(entry_point_counts[entry_point]),
71+
-- The filter might not work as expected when doing a non-lazy jog, so
72+
-- make sure it is processed with the default 'walk' function.
73+
force_pandoc_walk = true,
7174
}
7275
if is_many_filters then
7376
filter.filters = wrapped

src/resources/filters/ast/runemulation.lua

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,9 @@ local function run_emulated_filter_chain(doc, filters, afterFilterPass, profilin
7979
print(pandoc.write(doc, "native"))
8080
else
8181
_quarto.ast._current_doc = doc
82-
doc = run_emulated_filter(doc, v.filter)
82+
83+
doc = run_emulated_filter(doc, v.filter, v.force_pandoc_walk)
84+
8385
ensure_vault(doc)
8486

8587
add_trace(doc, v.name)
@@ -204,4 +206,4 @@ function run_as_extended_ast(specTable)
204206
end
205207

206208
return pandocFilterList
207-
end
209+
end

src/resources/filters/modules/jog.lua

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,10 @@ local function jog(element, filter)
255255
end
256256
end
257257

258+
if _QUARTO_USE_WALK then
259+
return element:walk(filter)
260+
end
261+
258262
-- Create and call traversal function
259263
local jog_internal = make_jogger(filter, context)
260264
return jog_internal(element)

src/resources/filters/normalize/astpipeline.lua

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ function quarto_ast_pipeline()
4444
parse_floatreftargets(),
4545
parse_blockreftargets()
4646
}),
47+
force_pandoc_walk = true,
4748
},
4849
{
4950
name = "normalize-3",

0 commit comments

Comments
 (0)