Editing Module:Age
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 3: | Line 3: | ||
local mtext = { | local mtext = { | ||
-- Message and other text that should be localized. | -- Message and other text that should be localized. | ||
['mt-bad-param1'] = 'Invalid parameter $1', | ['mt-bad-param1'] = 'Invalid parameter $1', | ||
['mt-bad-param2'] = 'Parameter $1=$2 is invalid', | ['mt-bad-param2'] = 'Parameter $1=$2 is invalid', | ||
Line 26: | Line 25: | ||
['mt-template-bad-name'] = 'The specified template name is not valid', | ['mt-template-bad-name'] = 'The specified template name is not valid', | ||
['mt-template-x'] = 'The template invoking this must have "|template=x" where x is the wanted operation', | ['mt-template-x'] = 'The template invoking this must have "|template=x" where x is the wanted operation', | ||
['txt-age'] = '(age ', | |||
['txt-aged'] = ' (aged ', | |||
['txt-and'] = ' and ', | ['txt-and'] = ' and ', | ||
['txt-comma-and'] = ', and ', | ['txt-comma-and'] = ', and ', | ||
['txt-error'] = 'Error: ', | ['txt-error'] = 'Error: ', | ||
['txt- | ['txt-or'] = ' or ', | ||
} | } | ||
Line 64: | Line 50: | ||
-- Return objects exported from the date module or its sandbox. | -- Return objects exported from the date module or its sandbox. | ||
if not _Date then | if not _Date then | ||
local sandbox = frame:getTitle():find( | local sandbox = frame:getTitle():find('sandbox', 1, true) and '/sandbox' or '' | ||
local datemod = require( | local datemod = require('Module:Date' .. sandbox) | ||
local realDate = datemod._Date | local realDate = datemod._Date | ||
_currentDate = datemod._current | _currentDate = datemod._current | ||
Line 116: | Line 102: | ||
end | end | ||
return text | return text | ||
end | end | ||
Line 138: | Line 111: | ||
end | end | ||
local function message(msg, | local function message(msg, id) | ||
-- Return formatted message text for an error or warning. | -- Return formatted message text for an error or warning. | ||
local function getText(msg) | local function getText(msg) | ||
return mtext[msg] or error('Bug: message "' .. tostring(msg) .. '" not defined') | return mtext[msg] or error('Bug: message "' .. tostring(msg) .. '" not defined') | ||
end | |||
local text | |||
if type(msg) == 'table' then | |||
text = getText(msg[1]) | |||
local rep = {} | |||
for i, v in ipairs(msg) do | |||
if i > 1 then | |||
rep['$' .. (i - 1)] = v | |||
end | |||
end | |||
text = text:gsub('$%d+', rep) | |||
else | |||
text = getText(msg) | |||
end | end | ||
local categories = { | local categories = { | ||
error = | error = '[[Category:Age error]]', | ||
warning = | warning = '[[Category:Age error]]', -- same as error until determine whether 'Age warning' would be worthwhile | ||
} | } | ||
local a, b | local a, b, category | ||
if id == 'warning' then | |||
a = '<sup>[<i>' | a = '<sup>[<i>' | ||
b = '</i>]</sup>' | b = '</i>]</sup>' | ||
else | else | ||
a = '<strong class="error">' .. getText('txt-error') | a = '<strong class="error">' .. getText('txt-error') | ||
b = '</strong>' | b = '</strong>' | ||
end | end | ||
if mw.title.getCurrentTitle():inNamespaces(0) then | if mw.title.getCurrentTitle():inNamespaces(0) then | ||
-- Category only in namespaces: 0=article. | -- Category only in namespaces: 0=article. | ||
category = | category = categories[id or 'error'] | ||
end | end | ||
return | return | ||
Line 195: | Line 178: | ||
-- i == 1 for the first number which can optionally start with an uppercase letter. | -- i == 1 for the first number which can optionally start with an uppercase letter. | ||
number = tostring(number) | number = tostring(number) | ||
return require( | return require('Module:ConvertNumeric').spell_number( | ||
number, | number, | ||
nil, -- fraction numerator | nil, -- fraction numerator | ||
Line 247: | Line 230: | ||
result = '<span data-sort-value="_SORTKEY_♠"></span>' | result = '<span data-sort-value="_SORTKEY_♠"></span>' | ||
end | end | ||
return | return result:gsub('_SORTKEY_', sortKey) | ||
end | end | ||
end | end | ||
Line 350: | Line 333: | ||
date = date + item | date = date + item | ||
if not date then | if not date then | ||
return message('mt-cannot-add', item) | return message({ 'mt-cannot-add', item }) | ||
end | end | ||
end | end | ||
Line 407: | Line 390: | ||
local name = names[components[i]] | local name = names[components[i]] | ||
if name then | if name then | ||
local plural = names.plural | |||
if not plural or (islist and v[2] or v) == 1 then | |||
plural = '' | |||
end | end | ||
text:add(vstr .. sep .. name) | text:add(vstr .. sep .. name .. plural) | ||
else | else | ||
text:add(vstr) | text:add(vstr) | ||
Line 458: | Line 442: | ||
-- which have been validated. | -- which have been validated. | ||
local names = { | local names = { | ||
abbr_off = { | abbr_off = { | ||
plural = 's', | |||
sep = ' ', | sep = ' ', | ||
y = | y = 'year', | ||
m = | m = 'month', | ||
w = | w = 'week', | ||
d = | d = 'day', | ||
H = | H = 'hour', | ||
M = | M = 'minute', | ||
S = | S = 'second', | ||
}, | }, | ||
abbr_on = { | abbr_on = { | ||
Line 482: | Line 463: | ||
}, | }, | ||
abbr_infant = { -- for {{age for infant}} | abbr_infant = { -- for {{age for infant}} | ||
plural = 's', | |||
sep = ' ', | sep = ' ', | ||
y = | y = 'yr', | ||
m = | m = 'mo', | ||
w = | w = 'wk', | ||
d = | d = 'day', | ||
H = | H = 'hr', | ||
M = | M = 'min', | ||
S = | S = 'sec', | ||
}, | }, | ||
abbr_raw = {}, | abbr_raw = {}, | ||
Line 570: | Line 552: | ||
(textOptions.suffix or '') | (textOptions.suffix or '') | ||
end | end | ||
return message('mt-bad-show', show.id) | return message({ 'mt-bad-show', show.id }) | ||
end | end | ||
Line 881: | Line 863: | ||
return message('mt-invalid-bd-age') | return message('mt-invalid-bd-age') | ||
end | end | ||
local disp = | local disp, show = 'disp_raw', 'y' | ||
if diff.years < 2 then | if diff.years < 2 then | ||
disp = 'disp_age' | disp = 'disp_age' | ||
Line 891: | Line 872: | ||
end | end | ||
end | end | ||
local | local df = stripToNil(args.df) -- day first (dmy); default is month first (mdy) | ||
local result = '(<span class="bday">%-Y-%m-%d</span>) </span>' .. | |||
(df and '%-d %B %-Y' or '%B %-d, %-Y') | |||
result = from_en('<span style="display:none"> ' .. | |||
date:text(result) .. | |||
'<span class="noprint ForceAgeToShow"> ' .. | |||
mtext['txt-age'] .. | |||
dateDifference({ | |||
diff = diff, | diff = diff, | ||
show = show, | show = show, | ||
Line 901: | Line 885: | ||
disp = disp, | disp = disp, | ||
sep = 'sep_space', | sep = 'sep_space', | ||
})) | }) .. | ||
')</span>') | |||
local warnings = tonumber(frame.args.warnings) | local warnings = tonumber(frame.args.warnings) | ||
if warnings and warnings > 0 then | if warnings and warnings > 0 then | ||
Line 931: | Line 915: | ||
end | end | ||
if invalid then | if invalid then | ||
result = result .. message('mt-bad-param1', invalid) | result = result .. message({ 'mt-bad-param1', invalid }, 'warning') | ||
end | end | ||
end | end | ||
Line 969: | Line 953: | ||
return message('mt-invalid-dates-age') | return message('mt-invalid-dates-age') | ||
end | end | ||
local | local df = stripToNil(args.df) -- day first (dmy); default is month first (mdy) | ||
local result | |||
if date1.day then -- y, m, d known | if date1.day then -- y, m, d known | ||
result = (df and | |||
'%-d %B %-Y' or | |||
'%B %-d, %-Y') .. | |||
'<span style="display:none">(%-Y-%m-%d)</span>' | |||
elseif date1.month then -- y, m known; d unknown | elseif date1.month then -- y, m known; d unknown | ||
result = | |||
'%B %-Y' .. | |||
'<span style="display:none">(%-Y-%m-00)</span>' | |||
else -- y known; m, d unknown | else -- y known; m, d unknown | ||
result = | |||
'%-Y' .. | |||
'<span style="display:none">(%-Y-00-00)</span>' | |||
end | end | ||
result = from_en(date1:text(result) .. | |||
mtext['txt- | mtext['txt-aged'] .. | ||
dateDifference({ | |||
diff = diff, | diff = diff, | ||
show = 'y', | show = 'y', | ||
abbr = 'abbr_off', | abbr = 'abbr_off', | ||
disp = | disp = 'disp_raw', | ||
range = 'dash', | range = 'dash', | ||
sep = 'sep_space', | sep = 'sep_space', | ||
})) | }) .. | ||
')') | |||
local warnings = tonumber(frame.args.warnings) | local warnings = tonumber(frame.args.warnings) | ||
if warnings and warnings > 0 then | if warnings and warnings > 0 then | ||
Line 1,015: | Line 1,002: | ||
end | end | ||
if invalid then | if invalid then | ||
result = result .. message('mt-bad-param1', invalid) | result = result .. message({ 'mt-bad-param1', invalid }, 'warning') | ||
end | end | ||
end | end | ||
Line 1,087: | Line 1,074: | ||
parm = translate[parm] | parm = translate[parm] | ||
if parm == nil then -- test for nil because false is a valid setting | if parm == nil then -- test for nil because false is a valid setting | ||
return message('mt-bad-param2', argname, args[argname]) | return message({ 'mt-bad-param2', argname, args[argname] }) | ||
end | end | ||
parms[argname] = parm | parms[argname] = parm | ||
Line 1,098: | Line 1,085: | ||
if show then | if show then | ||
if show.id ~= round then | if show.id ~= round then | ||
return message('mt-conflicting-show', args.show, args.round) | return message({ 'mt-conflicting-show', args.show, args.round }) | ||
end | end | ||
else | else |