Documentation for this module may be created at Module:Sandbox/Lord Belbury/Add quotemarks/doc
local p = {}
function p._addquotes(s)
if s then
if s:match([[^(['"]).*%1$]]) or s:match([[^‘.*’$]]) or s:match([[^“.*”$]]) then
-- If the string starts and ends with a quotemark (or starts and ends with an apostrophe), display it unchanged
return s
elseif s:match([[(["“”])]]) or s:match([[(['‘’])%s]]) or s:match([[%s(['‘’])]]) or s:match([[^(['‘’])]]) then
-- Otherwise if the string contains any quotemarks at all, or any apostrophes that aren't in the middle of a word (excluding end-of-string, which may be a possessive) , display it unchanged and add a hidden category to flag that the template call is providing something more complex than a single literal translation
return s .. "[[:Category:Articles with unusually formatted quotations]]"
else
-- Otherwise (ie. if the string contains no quotemarks, and any apostrophes are in the middles of words), display it surrounded by additional quotemarks
return "\"" .. s .. "\""
end
else
return "zzz"
end
end
function p.addquotes(frame)
local s = (frame.args['s'] or frame.args[1]) or (frame:getParent().args['s'] or frame:getParent().args[1])
return p._addquotes(s)
end
return p