From 2eef26a5d9cf60963bba780c699c2fbe6b96ab5f Mon Sep 17 00:00:00 2001 From: Bastien Dumont Date: Thu, 18 Dec 2025 21:47:59 +0100 Subject: [PATCH] Avoid unnecessary global variable --- text-crossrefs/text-crossrefs.lua | 37 ++++++++++++++++--------------- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/text-crossrefs/text-crossrefs.lua b/text-crossrefs/text-crossrefs.lua index bedd7b1..d2ceed6 100644 --- a/text-crossrefs/text-crossrefs.lua +++ b/text-crossrefs/text-crossrefs.lua @@ -247,19 +247,19 @@ local function labelize_span(span) end end -local labels_in_current_note = {} - -local collect_note_labels = { - Span = function(span) - if span.identifier ~= '' - and ((not config.only_explicit_labels) or span.classes:includes('label')) - then - table.insert(labels_in_current_note, span.identifier) +local function collect_note_labels(labels_in_current_note) + return { + Span = function(span) + if span.identifier ~= '' + and ((not config.only_explicit_labels) or span.classes:includes('label')) + then + table.insert(labels_in_current_note, span.identifier) + end end - end -} + } +end -local function make_notelabel(pos) +local function make_notelabel(pos, labels_in_current_note) -- About the strategy followed with ConTeXt, -- see above support_footnote_label_ConTeXt. local raw_code = '' @@ -275,15 +275,16 @@ local function make_notelabel(pos) if RAW_ATTRIBUTE == 'openxml' then raw_code = string.gsub('', '{{label}}', labels_in_current_note[1]) + elseif RAW_ATTRIBUTE == 'typst' then + raw_code = '' end end return pandoc.RawInline(RAW_ATTRIBUTE, raw_code) end -local function labelize_note(note) - local labelized_note - local label_begin = make_notelabel('begin') - local label_end = make_notelabel('end') +local function labelize_note(note, labels_in_current_note) + local label_begin = make_notelabel('begin', labels_in_current_note) + local label_end = make_notelabel('end', labels_in_current_note) return { label_begin, note, label_end } end @@ -295,11 +296,11 @@ local function map_text_to_note_labels(labels_in_current_note) end function set_notelabels(note) - labels_in_current_note = {} - pandoc.walk_inline(note, collect_note_labels) + local labels_in_current_note = {} + note:walk(collect_note_labels(labels_in_current_note)) if #labels_in_current_note > 0 then map_text_to_note_labels(labels_in_current_note) - return labelize_note(note) + return labelize_note(note, labels_in_current_note) end end