Module:TemplateHelpers: Difference between revisions
// via Wikitext Extension for VSCode Tag: Manual revert |
// via Wikitext Extension for VSCode Tag: Reverted |
||
| Line 572: | Line 572: | ||
return TemplateStructure.renderDividerBlock(label) | return TemplateStructure.renderDividerBlock(label) | ||
end | end | ||
-- Merge helper: deduplicate and combine existing values and a new value | |||
local function mergeValues(existing, newValue) | |||
if not newValue or newValue == "" then return existing end | |||
if not existing then return newValue end | |||
local set = {} | |||
local result = {} | |||
if type(existing) == "table" then | |||
for _, v in ipairs(existing) do | |||
set[v] = true | |||
table.insert(result, v) | |||
end | |||
else | |||
set[existing] = true | |||
table.insert(result, existing) | |||
end | |||
if not set[newValue] then | |||
table.insert(result, newValue) | |||
end | |||
if #result == 1 then return result[1] end | |||
return result | |||
end | |||
p.mergeValues = mergeValues | |||
-- Extracts semantic value from a field, handling wiki links appropriately | -- Extracts semantic value from a field, handling wiki links appropriately | ||
| Line 587: | Line 610: | ||
if LinkParser.processWikiLink(fieldValue, "check") then | if LinkParser.processWikiLink(fieldValue, "check") then | ||
-- Use the standardized error handling helper | -- Use the standardized error handling helper | ||
return p.withErrorHandling( | |||
errorContext, | |||
"extractFromWikiLink_" .. fieldName, | |||
LinkParser.extractFromWikiLink, | |||
nil, | |||
fieldValue | |||
) | |||
else | |||
-- Otherwise, | -- Otherwise, only return values from wiki links; drop raw input | ||
return | return nil | ||
end | end | ||
end | end | ||