Module:WikitextProcessor: Difference between revisions
// via Wikitext Extension for VSCode Tag: Manual revert |
// via Wikitext Extension for VSCode Tag: Reverted |
||
| Line 115: | Line 115: | ||
-- Replaces placeholder patterns ($VARIABLE$) with actual values | -- Replaces placeholder patterns ($VARIABLE$) with actual values | ||
function p.replacePlaceholders(content, placeholderMap) | function p.replacePlaceholders(content, placeholderMap, errorContext) | ||
if not content | if not content then | ||
return content | return content | ||
end | |||
-- DEFENSIVE: Input validation with detailed logging | |||
if not placeholderMap or type(placeholderMap) ~= "table" then | |||
if errorContext then | |||
ErrorHandling.addStatus(errorContext, CONTEXT_NAME, 'Invalid placeholder map', 'Type: ' .. type(placeholderMap)) | |||
end | |||
return content | |||
end | |||
-- DEFENSIVE: Validate critical placeholders with detailed logging | |||
local validPlaceholders = {} | |||
local invalidPlaceholders = {} | |||
for key, value in pairs(placeholderMap) do | |||
if value and type(value) == "string" and value ~= "" then | |||
validPlaceholders[key] = value | |||
if errorContext then | |||
ErrorHandling.addStatus(errorContext, CONTEXT_NAME, 'Valid placeholder received', 'Key: ' .. key .. ', Value: "' .. value .. '"') | |||
end | |||
else | |||
invalidPlaceholders[key] = tostring(value) | |||
if errorContext then | |||
ErrorHandling.addStatus(errorContext, CONTEXT_NAME, 'Invalid placeholder detected', 'Key: ' .. key .. ', Value: "' .. tostring(value) .. '", Type: ' .. type(value)) | |||
end | |||
end | |||
end | end | ||
| Line 123: | Line 149: | ||
-- Apply placeholder replacement exactly like the original T-Campaign code | -- Apply placeholder replacement exactly like the original T-Campaign code | ||
for key, value in pairs( | for key, value in pairs(validPlaceholders) do | ||
local beforeReplace = result | |||
result = result:gsub("%$" .. key .. "%$", value) | |||
-- Log successful replacements | |||
if beforeReplace ~= result and errorContext then | |||
ErrorHandling.addStatus(errorContext, CONTEXT_NAME, 'Placeholder replaced successfully', 'Key: ' .. key .. ', Replacements made') | |||
end | end | ||
end | end | ||
-- Clean up any remaining unfilled placeholders (TemplateStarter's removeEmptyPlaceholders logic) | -- Clean up any remaining unfilled placeholders (TemplateStarter's removeEmptyPlaceholders logic) | ||
local beforeCleanup = result | |||
result = result:gsub("%$[A-Z_]+%$", "") | result = result:gsub("%$[A-Z_]+%$", "") | ||
result = result:gsub("%s+", " "):gsub("^%s+", ""):gsub("%s+$", "") | result = result:gsub("%s+", " "):gsub("^%s+", ""):gsub("%s+$", "") | ||
-- Log cleanup if any unfilled placeholders were removed | |||
if beforeCleanup ~= result and errorContext then | |||
ErrorHandling.addStatus(errorContext, CONTEXT_NAME, 'Unfilled placeholders cleaned up', 'Content normalized') | |||
end | |||
return result | return result | ||