--[[
Split the title into words then test each of them against the list of months
v07 -- accepts a parameter
]]
local getArgs = require('Module:Arguments').getArgs
local p = {}
local monthList = {
'January',
'February',
'March',
'April',
'May',
'June',
'July',
'August',
'September',
'October',
'November',
'December'
}
-- splits a string into "words"
-- a "word" is a set of characters delineated at each end by one
-- or more whitespace characters or punctaution charaters
function splitIntoWords(str)
result = {}
index = 1
s = mw.ustring.gsub(str, "^[%s%p]+", "") -- strip leading whitespace or punctuation
for s2 in mw.ustring.gmatch(s, "[^%s%p]+[%s%p]*") do
s3 = mw.ustring.gsub(s2, "[%s%p]+$", "") -- strip trailing separators
result[index] = s3
index = index + 1
end
return result
end
-- returns the first word is the pagename which matches the name of a month
-- ... or an empty string if there is no match
function checkPagename(pn)
-- split the pagename into sparate words
titleWords =splitIntoWords(pn)
-- check each words in turn, to see if it matches a month
for w, thisWord in ipairs(titleWords) do
-- check agaist each month
-- if there is a match, then return that monthname
for i, thisMonth in ipairs(monthList) do
if (thisMonth == thisWord) then
return thisMonth
end
end
end
--if we get here, none of the title words matches a whole month
return ""
end
function p.main(frame)
local args = getArgs(frame)
return p._main(args)
end
function p._main(args)
thispagename = nil
if (args[1] ~= nil) then
thispagename = args[1]
else
-- get the page title
thispage = mw.title.getCurrentTitle()
thispagename = thispage.text;
end
return checkPagename(thispagename)
end
return p