Home
Random
Recent changes
Special pages
Community portal
Preferences
About Stockhub
Disclaimers
Search
User menu
Talk
Contributions
Create account
Log in
Editing
Module:Sandbox/Ans/CS1Local
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!
--[[--------------------------< F O R W A R D D E C L A R A T I O N S >-------------------------------------- ]] local cfg; -- table of tables imported from slected Module:Citation/CS1/Configuration local function _convert_year(val, local_digits) val = mw.ustring.gsub (val, '%d', local_digits); -- translate 'local' digits to Western 0-9 if val:match("^%d+$") then val = val-543; -- convert year to 4 digits to prevent it being interpreted as day in en module if val<0 then return false; -- TODO: handle this --elseif val<1 then -- val='000'..val; elseif val<10 then -- this should be faster than formatDate()? val='000'..val; elseif val<100 then val='00'..val; elseif val<1000 then val='0'..val; end return val; end return false; end local en_month_name = {'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'}; local function _convert_local_date(val, date_names_local, local_digits) local dmy = mw.text.split(val, '%s+'); if #dmy == 3 then dmy[2] = date_names_local.long[dmy[2]] or date_names_local.short[dmy[2]]; if dmy[2] then --dmy[1] = tonumber(dmy[1]); if dmy[1]<10 then dmy[1]='0'..dmy[1]; end -- this should be faster than formatDate() --dmy[2] = tonumber(dmy[2]); if dmy[2]<10 then dmy[2]='0'..dmy[2]; end --return dmy[3]-543 ..'-'..dmy[2]..'-'..dmy[1]; dmy[1] = mw.ustring.gsub (dmy[1], '%d', local_digits); -- translate 'local' digits to Western 0-9 -- always interprete dmy[1] as day if dmy[1]:match("^%d%d?$") then dmy[1] = tonumber(dmy[1]); if dmy[1]>31 or dmy[1]<1 then return val; end dmy[3] = _convert_year(dmy[3], local_digits); if dmy[3] then return dmy[1]..' '..en_month_name[dmy[2]]..' '..dmy[3]; end return val; end return val; end return val; elseif #dmy == 2 then local dmy1 = date_names_local.long[dmy[1]] or date_names_local.short[dmy[1]]; if dmy1 then dmy[2] = _convert_year(dmy[2], local_digits); if dmy[2] then return en_month_name[dmy1]..' '..dmy[2]; end return val; end dmy[2] = date_names_local.long[dmy[2]] or date_names_local.short[dmy[2]]; if dmy[2] then dmy[1] = mw.ustring.gsub (dmy[1], '%d', local_digits); -- translate 'local' digits to Western 0-9 -- always interprete dmy[1] as day if dmy[1]:match("^%d%d?$") then dmy[1] = tonumber(dmy[1]); if dmy[1]>31 or dmy[1]<1 then return val; end return dmy[1]..' '..en_month_name[dmy[2]]; end return val; end return val; elseif #dmy == 1 then dmy[1] = date_names_local.long[dmy[1]] or date_names_local.short[dmy[1]]; if dmy[1] then return en_month_name[dmy[1]]; end return val; else return val; end end --[[ Some local wiki use non-Gregorian calendar. Use this function to convert local non-Gregorian calendar to Gregorian calendar ]] local function convert_local_date(k, val) if 'year'==k then --return 2010; return val; --elseif 'date'==k or 'access-date'==k or 'archive-date'==k or 'doi-broken-date'==k or 'embargo'==k or 'lay-date'==k or 'publication-date'==k then -- return _convert_local_date(val, cfg.date_names['local'], cfg.date_names.local_digits); --elseif 'embargo'==k then -- return val; else mw.log(k, _convert_local_date(val, cfg.date_names['local'], cfg.date_names.local_digits)); return _convert_local_date(val, cfg.date_names['local'], cfg.date_names.local_digits); --return val; end --return '2010-04-30'; --return val; end --[[--------------------------< S E T _ S E L E C T E D _ M O D U L E S >-------------------------------------- Sets local imported functions table to same (live or sandbox) as that used by the other modules. ]] local function set_selected_modules (cfg_table_ptr, utilities_page_ptr) cfg = cfg_table_ptr; -- import tables from selected Module:Citation/CS1/Configuration end --[[--------------------------< E X P O R T S >---------------------------------------------------------------- ]] return { convert_local_date = convert_local_date, set_selected_modules = set_selected_modules, _convert_local_date = _convert_local_date, -- TODO: split to another separated module? _convert_local_year = _convert_year, -- TODO: split to another separated module? }
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:Sandbox/Ans/CS1Local/doc
(
edit
)