Módulo:ISO
Aspeto
Módulo:ISO/doc converte uma data (por exemplo, 17 de janeiro de 2000) para o formato ISO 8601 (por exemplo, 2000-01-17). Este modelo foi projetado para pré-processar datas para uso com a função de analisador #time.
Adaptação para língua portuguesa está disponível na predefinição {{ISO}}
. Isso é utilizado em Wikinotícias:COINS e afeta todas as predefinições de citação.
Uso
{{#invoke:ISO|ISODate|data escolhida}}
Exemplo
{{#invoke:ISO|ISODate|October 26, 1994}}
→ 1994-10-26{{#invoke:ISO|ISODate|26 Oct 1994}}
→ 1994-10-26{{#invoke:ISO|ISODate|Sept 1994}}
→ 1994-09{{#invoke:ISO|ISODate|1994-8-1}}
→ 1994-08-01{{#invoke:ISO|ISODate|1994-8}}
→ 1994-08
Ver também
- Help:Extension:ParserFunctions — uso de #time
Esta documentação se encontra na subpágina Módulo:ISO/doc ( | histórico)
Por favor inclua as categorias à subpágina /doc. Subpáginas deste módulo.
Por favor inclua as categorias à subpágina /doc. Subpáginas deste módulo.
require('strict')
local getArgs = require('Module:Arguments').getArgs
local yesno = require('Module:Yesno')
local p = {}
local function error(template)
return '<strong class="error">(erro)</strong>[[Category:!Notícias com erros]]'
end
local function time(format, object)
return mw.getCurrentFrame():callParserFunction('#time', format, object)
end
local function convert(input)
input = input
:gsub(" "," ")
:gsub("%s+"," ")
:gsub('(%a+)[ ,]*(%d+)', '%1 %2');
local y, m, d, suf
local datePatternList = {
-- English date format
{'%d%d? ?%a+[ ,]*%d+', 'Y-m-d'}, -- 26 Oct 1994
{'%a+ ?%d%d?[ ,]+%d+', 'Y-m-d'}, -- Oct 26, 1994
{'%a+[ ,]*%d%d%d%d+', 'Y-m'}, -- Oct 1994
{'%a+ ?%d%d?', 'Y-m-d'}, -- Oct 26
{'%d%d? *%a+', 'Y-m-d'}, -- 26 Oct
-- Slash or hyphen date format
{'%d+/%d%d?/%d+', 'Y-m-d'}, -- 1994/10/26 or 10/26/1994
{'%d+%.%d%d?%.%d+', 'Y-m-d'}, -- 1994.10.26 or 26.10.1994
{'%d%d?/%d%d?', 'Y-m-d'}, -- 10/26
{'%d+%-%d%d?%-%d+', 'Y-m-d'}, -- 1994-10-26 or 26-10-94
{'%d%d%d%d+%-%d%d?', 'Y-m'}, -- 1994-10
{'%d%d%d%d', 'Y'}, -- 1994
}
for _, value in ipairs(datePatternList) do
local str, suf = string.match(input, '^(' .. value[1] .. ')(.*)$');
if str then
return time(value[2], str), suf
end
end
return time('Y-m-d', 'error')
end
function p._ISODate(args, error)
local returnval, suf = convert(args[1])
local errorMessage = time('Y-m-d', 'error')
if returnval == errorMessage and args.error == 'ignore' then
return args[1]
end
if returnval == errorMessage then
--- return error('ISODate')
return '<strong class="error">(erro)</strong>[[Category:!Notícias com erros]]'
end
return returnval .. (args.suffix and suf or '')
end
function p.ISODate(frame)
local args = getArgs(frame)
return p._ISODate(args)
end
return p