Modul:Age: Unterschied zwischen den Versionen

1.005 Bytes hinzugefügt ,  vor 6 Jahren
update from sandbox with features discussed at Template talk:Age
K (Changed protection level for "Module:Age": that was weird ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)))
(update from sandbox with features discussed at Template talk:Age)
Zeile 312: Zeile 312:
return
return
(options.prefix or '') ..
(options.prefix or '') ..
(options.extra or '') ..
sign ..
sign ..
text:join() ..
text:join() ..
Zeile 401: Zeile 402:
prefix = prefix,
prefix = prefix,
suffix = parms.suffix,  -- not currently used
suffix = parms.suffix,  -- not currently used
extra = parms.extra,
format = parms.format,
format = parms.format,
join = parms.sep or defaultJoin,
join = parms.sep or defaultJoin,
Zeile 443: Zeile 445:
local Date, currentDate = getExports(frame)
local Date, currentDate = getExports(frame)
getopt = getopt or {}
getopt = getopt or {}
local function flagCurrent(text)
-- This allows the calling template to detect if the current date has been used,
-- that is, whether both dates have been entered in a template expecting two.
-- For example, an infobox may want the age when an event occurred, not the current age.
-- Don't bother detecting if wantMixture is used because not needed and it is a poor option.
if not text then
text = 'currentdate'
if getopt.flag == 'usesCurrent' then
getopt.usesCurrent = true
end
end
return text
end
local args = frame:getParent().args
local args = frame:getParent().args
local fields = {}
local fields = {}
Zeile 465: Zeile 480:
if fields[i] then
if fields[i] then
imax = i
imax = i
end
if getopt.omitZero and i % 3 ~= 1 then  -- omit zero months and days as unknown values but keep year 0 which is 1 BCE
if tonumber(fields[i]) == 0 then
fields[i] = nil
getopt.partial = true
end
end
end
end
end
Zeile 495: Zeile 516:
dates[i] = Date(fix, partialText, y, m, d)
dates[i] = Date(fix, partialText, y, m, d)
elseif not y and not m and not d and not noDefault then
elseif not y and not m and not d and not noDefault then
dates[i] = Date('currentdate')
dates[i] = Date(flagCurrent())
end
end
end
end
Zeile 501: Zeile 522:
elseif not noDefault then
elseif not noDefault then
getopt.textdates = true  -- have parsed each date from a single text field
getopt.textdates = true  -- have parsed each date from a single text field
dates[1] = Date(fix, partialText, fields[1] or 'currentdate')
dates[1] = Date(fix, partialText, flagCurrent(fields[1]))
if not getopt.single then
if not getopt.single then
dates[2] = Date(fix, partialText, fields[2] or 'currentdate')
dates[2] = Date(fix, partialText, flagCurrent(fields[2]))
end
end
end
end
Zeile 553: Zeile 574:
show = 'y',
show = 'y',
abbr = 'abbr_raw',
abbr = 'abbr_raw',
flag = 'usesCurrent',
omitZero = true,
range = 'no',
},
},
age_full_years_nts = {      -- {{age nts}}
age_full_years_nts = {      -- {{age nts}}
Zeile 650: Zeile 674:
local getopt = {
local getopt = {
fix = yes(args.fix),
fix = yes(args.fix),
flag = stripToNil(args.flag) or spec.flag,
omitZero = spec.omitZero,
partial = partial,
partial = partial,
wantMixture = spec.wantMixture,
wantMixture = spec.wantMixture,
Zeile 671: Zeile 697:
abbr = spec.abbr,
abbr = spec.abbr,
disp = spec.disp,
disp = spec.disp,
extra = (getopt.usesCurrent and format ~= 'format_raw') and '<span class="currentage"></span>' or nil,
format = format or spec.format,
format = format or spec.format,
round = yes(args.round),
round = yes(args.round),
Zeile 726: Zeile 753:
df = true,
df = true,
mf = true,
mf = true,
template = true,
day = true,
day = true,
day1 = true,
day1 = true,
Anonymer Benutzer