Module:Citation/CS1/Date validation: Difference between revisions
Synch from sandbox;
m>Trappist the monk (Synch from sandbox;) |
m>Trappist the monk (Synch from sandbox;) |
||
Line 9: | Line 9: | ||
--[[ | --[=[-------------------------< I S _ V A L I D _ A C C E S S D A T E >---------------------------------------- | ||
returns true if: | returns true if: | ||
Line 21: | Line 21: | ||
adding 24 hours gives 2015-01-03T00:00:00 – one second more than tomorrow | adding 24 hours gives 2015-01-03T00:00:00 – one second more than tomorrow | ||
]] | This function does not work for languages other than English. Wikimedia #time: parser apparently doesn't understand | ||
non-Engish date month names. This function will always return false when the date contains a non-English month name | |||
because good1 is false after the call to lang.formatDate. | |||
For the time being, to use this function, supply it with YYYY-MM-DD format dates. See | |||
[[bs:Modul:Citation/CS1/Date validation/igralište]] for one possible solution. | |||
]=] | |||
local function is_valid_accessdate (accessdate) | local function is_valid_accessdate (accessdate) | ||
Line 54: | Line 61: | ||
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}; | 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}; | ||
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}; | 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[month] or -- if month is the long-form name | |||
short_months[month] or -- if month is the short-form name | |||
0; -- misspelled, improper case, or not a month name | |||
end | end | ||
Line 195: | Line 199: | ||
local function is_valid_month_season_range(range_start, range_end) | local function is_valid_month_season_range(range_start, range_end) | ||
local range_start_number = get_month_number (range_start); | local range_start_number = get_month_number (range_start); | ||
local range_end_number; | |||
if 0 == range_start_number then -- is this a month range? | if 0 == range_start_number then -- is this a month range? | ||
local range_start_number = get_season_number (range_start); -- not a month; is it a season? get start season number | local range_start_number = get_season_number (range_start); -- not a month; is it a season? get start season number | ||
range_end_number = get_season_number (range_end); -- get end season number | |||
if 0 ~= range_start_number then -- is start of range a season? | if 0 ~= range_start_number then -- is start of range a season? | ||
Line 211: | Line 216: | ||
end | end | ||
range_end_number = get_month_number (range_end); -- get end month number | |||
if range_start_number < range_end_number then -- range_start is a month; does range_start precede range_end? | if range_start_number < range_end_number then -- range_start is a month; does range_start precede range_end? | ||
if is_valid_month_range_style (range_start, range_end) then -- do months have the same style? | if is_valid_month_range_style (range_start, range_end) then -- do months have the same style? |