وحدة:Citation/CS1/dates
المظهر
هذه الوحدة مستخدمة في عدد كبير من الصفحات .
لتفادي خلق بلبلة على نطاق واسع من الصفحات وزيادة الأعباء على الخوادم، يجب تجربة أي تعديل في هذه الصفحات الفرعية /ملعب أو /تجربة أو في ملعبك. بعدها يمكنك اضافة التعديلات دفعة واحدة، ورجاءً، لا تنسَ مناقشة أمر التعديلات أوّلًا قبل القيام بها.
لتفادي خلق بلبلة على نطاق واسع من الصفحات وزيادة الأعباء على الخوادم، يجب تجربة أي تعديل في هذه الصفحات الفرعية /ملعب أو /تجربة أو في ملعبك. بعدها يمكنك اضافة التعديلات دفعة واحدة، ورجاءً، لا تنسَ مناقشة أمر التعديلات أوّلًا قبل القيام بها.
- 2018-03-17 ينتج ← 17 مارس 2018
- 19-2-2015 ينتج ← 19 فبراير 2015
- 19-02-2015 ينتج ← 19 فبراير 2015
- 19 may 2015 ينتج ← 19 مايو 2015
- 10 may 2015 ينتج ← 10 مايو 2015
- May 12, 2009 ينتج ← 12 مايو 2009
- 19 مايو 2015 ينتج ← 19 مايو 2015
- 10 مايو 2015 ينتج ← 10 مايو 2015
جديد
[عدل]
local p = {}
match_tab_n = {
["^%a+ %d%d%, %d%d%d%d$"] ="(%a+) (%d%d)%, (%d%d%d%d)",
}
match_tab = {
--["^[1-9]%d? +%a+ +[1-9]%d%d%d%a?$"] ="(%d%d*)%s*(%a+)%s*((%d%d%d%d)%a?)",
["^%d %a+ %d%d%d%d$"] ="(%d) (%a+) (%d%d%d%d)",
["^%d%d %a+ %d%d%d%d$"] ="(%d%d) (%a+) (%d%d%d%d)",
['^%d %d %d%d%d%d$']= '(%d) (%d) (%d%d%d%d)',
['^%d %d%d %d%d%d%d$']= '(%d) (%d%d) (%d%d%d%d)',
['^%d%d %d %d%d%d%d$']= '(%d%d) (%d) (%d%d%d%d)',
['^%d%d %d%d %d%d%d%d$']= '(%d%d) (%d%d) (%d%d%d%d)',
['^%d%-%d%-%d%d%d%d$']= '(%d)%-(%d)%-(%d%d%d%d)',
['^%d%-%d%d%-%d%d%d%d$']= '(%d)%-(%d%d)%-(%d%d%d%d)',
['^%d%d%-%d%-%d%d%d%d$']= '(%d%d)%-(%d)%-(%d%d%d%d)',
['^%d%d%-%d%d%-%d%d%d%d$']= '(%d%d)%-(%d%d)%-(%d%d%d%d)',
}
match_tab_en = {
['^%d%d%d%d %d %d$']= '(%d%d%d%d) (%d) (%d)$',
['^%d%d%d%d %d %d%d$']= '(%d%d%d%d) (%d) (%d%d)$',
['^%d%d%d%d %d%d %d$']= '(%d%d%d%d) (%d%d) (%d)$',
['^%d%d%d%d %d%d %d%d$']= '(%d%d%d%d) (%d%d) (%d%d)$',
['^%d%d%d%d%-%d%-%d$']= '(%d%d%d%d)%-(%d)%-(%d)$',
['^%d%d%d%d%-%d%-%d%d$']= '(%d%d%d%d)%-(%d)%-(%d%d)$',
['^%d%d%d%d%-%d%d%-%d$']= '(%d%d%d%d)%-(%d%d)%-(%d)$',
['^%d%d%d%d%-%d%d%-%d%d$']= '(%d%d%d%d)%-(%d%d)%-(%d%d)$',
}
--[[
tato = {"%d" , "%d%d"}
spaces = {" " , "%-"}
for _p, space in pairs(spaces) do
for o, k1 in ipairs(tato) do
for _, k2 in ipairs(tato) do
s_k = "^" .. k1 .. space .. k2 .. space .. "%d%d%d%d$"
s_v = "(" .. k1 .. ")".. space .. "(" .. k2 .. ")".. space .. "(" .. "%d%d%d%d)"
match_tab[s_k] = s_v
--mw.log("['" .. s_k .. "']= '" .. s_v .. "'")
s_k1 = "^%d%d%d%d" .. space .. k1 .. space .. k2 .. "$"
s_v1 = "(%d%d%d%d)" .. space .. "(" .. k1 .. ")".. space .. "(" .. k2 .. ")$"
match_tab_en[s_k1] = s_v1
--mw.log("['" .. s_k1 .. "']= '" .. s_v1 .. "'")
end
end
end
]]
local function get_month_number(month)
month2 = month:lower()
local long_months = {['january']=1, ['february']=2, ['march']=3, ['april']=4, ['may']=5, ['june']=6, ['july']=7, ['august']=8, ['september']=9, ['october']=10, ['november']=11, ['december']=12,
['يناير']=1, ['فبراير']=2, ['مارس']=3, ['أبريل']=4, ['مايو']=5, ['يونيو']=6, ['يوليو']=7, ['أغسطس']=8, ['سبتمبر']=9, ['أكتوبر']=10, ['نوفمبر']=11, ['ديسمبر']=12 };
local short_months = {['jan']=1, ['feb']=2, ['mar']=3, ['apr']=4, ['may']=5, ['jun']=6, ['jul']=7, ['aug']=8, ['sep']=9, ['oct']=10, ['nov']=11, ['dec']=12};
return long_months[month2] or -- if month is the long-form name
short_months[month2] or -- if month is the short-form name
0; -- misspelled, improper case, or not a month name
end
function p.check_date (date_string)
local year;
local month=0;
local day=0;
local faild = true;
local date_string2 = date_string
local day , month , year
--match_tab_en
date_string = date_string:gsub('Mars' , 'march')
if string.find(date_string,"[ا|أ|ب|ت|ث|ج|ح|خ|د|ذ|ر|ز|س|ش|ص|ض|ط|ظ|ع|غ|ف|ق|ك|ل|م|ن|ه|و|ي]")
--then date_string2 = date_string
then return date_string
else
for key, v in pairs(match_tab_n) do
if date_string:match( key ) and faild then
faild = false
month, day, year = string.match(date_string, v );
end
end
for key, v in pairs(match_tab) do
if date_string:match( key ) and faild then
faild = false
day, month, year = string.match(date_string, v );
end
end
for key, v in pairs(match_tab_en) do
if date_string:match( key ) and faild then
faild = false
year, month, day = string.match(date_string, v );
end
end
end
fa = date_string2
--if faild then
--mw.log(date_string .. " faild")
if not faild then
if month:match("%a+") then
month = get_month_number(month)
end
date_string2 = day .. "-" .. month .. "-" .. year
--mw.log("day" .. day .. ", month" .. month .. ", year" .. year)
if 12 < tonumber(month) or 31 < tonumber(month) or 1 > tonumber(month) or 1582 > tonumber(year) or 0 == tonumber(day)
then
--mw.log(date_string .. " false")
return date_string
end
--fa = '{{#time:d F Y|' .. date_string .. '}}'
fa = mw.getCurrentFrame():callParserFunction( '#time:d F Y', '' .. date_string2 .. '' )
end
--cp = "* " .. date_string .. " : \n**" .. fa
return fa
end
function p.check (frame)
return p.check_date(frame.args[1])
end
return p