Home
Random
Recent changes
Special pages
Community portal
Preferences
About Stockhub
Disclaimers
Search
User menu
Talk
Contributions
Create account
Log in
Editing
Module:Month translator
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
require('strict') local getArgs = require ('Module:Arguments').getArgs; local data = mw.loadData ('Module:month translator/data'); --[[--------------------------< _ M O N T H _ X L A T E >------------------------------------------------------ {{#invoke:Month translator|month_xlate|<date>}} ]] local function _month_xlate (args_t) local t = {}; local day, month, year; if 'dump' == args_t[1] then -- args_t[1] = 'dump' to dump <month_names_t> table; return mw.dumpObject (data.month_names_t); end if not args_t[1] then return nil end for i, pattern in ipairs (data.patterns) do -- spin through the patterns table looking for a match local c1, c2, c3; -- captures in the 'pattern' from the pattern table go here c1, c2, c3 = mw.ustring.match (mw.text.trim (args_t[1]), pattern[1]); -- one or more captures set if source matches patterns[i][1]) if c1 then -- c1 always set on match t = { [pattern[2] or 'x'] = c1, -- fill the table of captures with the captures [pattern[3] or 'x'] = c2, -- take index names from pattern table and assign sequential captures [pattern[4] or 'x'] = c3, -- index name may be nil in pattern table so "or 'x'" spoofs a name for this index in this table }; day = t.d or ''; -- translate table contents to named variables; month = mw.ustring.lower (t.m or ''); -- absent table entries are nil so set unused parts to empty string; lowercase for indexing month = data.override_names[month] or data.month_names_t[month]; -- replace non-English name with English name from translation tables year= t.y or ''; if month then local df = table.concat ({pattern[2], pattern[3], pattern[4]}, ''); -- extract date format from pattern table (pattern[2], pattern[3], pattern[4]) if 'dmy' == df then -- for dmy dates return table.concat ({day, month, year}, ' '); -- assemble an English language dmy date elseif 'my' == df then -- for month year dates return table.concat ({month, year}, ' '); -- assemble an English language dmy date elseif 'mdy' == df then -- for mdy dates return string.format ('%s %s, %s', month, day, year); -- assemble an English language mdy date elseif 'm' == df then -- must be month (only valid option remaining) return month; -- none of the above, return the translated month; end end break; -- and done; if here found pattern match but did not find non-English month name in <month_names_t> end end return args_t[1]; -- if here, couldn't translate so return the original date end --[[--------------------------< M O N T H _ X L A T E >-------------------------------------------------------- {{#invoke:Month translator|month_xlate|<date>}} ]] local function month_xlate (frame) return _month_xlate (getArgs (frame)); end --[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------ ]] return { month_xlate = month_xlate, _month_xlate = _month_xlate };
Summary:
Please note that all contributions to Stockhub may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Stockhub:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Template used on this page:
Module:Month translator/doc
(
edit
)