Module:User Wikisource For

-- Implements Template:User Wikisource For

require('strict')

local p = {}

local getArgs = require('Module:Arguments').getArgs local yesno = require('Module:Yesno') local userbox = require('Module:Userbox').userbox

function p._user_wikisource_for(args) local given_date = { year = args.year or 0, month = args.month or 0, day = args.day or 0 }	mw.logObject(os.date("*t", os.time(given_date))) local current_date = { year = os.date('%Y'), month = os.date('%m'), day = os.date('%d') }	mw.logObject(os.date("*t", os.time(current_date))) local age_string = "" if os.time(current_date) == os.time(given_date) then age_string = "0 days" else local minus_time = "" if os.time(current_date) < os.time(given_date) then minus_time = "-" local temp = current_date current_date = given_date given_date = temp end local age = { years = current_date.year - given_date.year, months = current_date.month - given_date.month, days = current_date.day - given_date.day }		if age.years > 0 and (age.months < 0 or age.days < 0) then age.years = age.years - 1 age.months = age.months + 12 end if age.months > 0 and age.days < 0 then age.months = age.months - 1 local current_month_end = {year = current_date.year, month = current_date.month, day = 31} local previous_month_end = {year = current_date.year, month = current_date.month - 1, day = 31} if current_date.month == 1 then previous_month_end = {year = current_date.year - 1, month = 12, day = 31} end age.days = age.days + os.date("*t", os.time(current_month_end)).yday - os.date("*t", os.time(previous_month_end)).yday end local age_string_table = {} for k, v in pairs({"year", "month", "day"}) do if age[v .. "s"] == 1 then table.insert(age_string_table, "1 " .. v) elseif age[v .. "s"] > 0 then table.insert(age_string_table, age[v .. "s"] .. " " .. v .. "s") end end age_string_table[#age_string_table] = "and " .. age_string_table[#age_string_table] age_string = minus_time .. table.concat(age_string_table, ", ") end mw.logObject(age_string) local info = '' if yesno(args.wikibirthday or true) then if os.time(current_date) == os.time(given_date) then info = "Today is this user's first day on Wikisource. " elseif given_date.month == current_date.month and given_date.day == current_date.day then info = "Today is this user's Wikisource Birthday. " end end info = info .. "This user has been on Wikisource for '''" .. age_string .. "'''."	local box_args = { ['border-c'] = args.border or '#55A0AA', ['id'] = '', ['id-c'] = args.imgbg or '#DDEDEE', ['info'] = info, ['info-c'] = args.bgcolor or '#AAD0DD' }	return userbox(box_args) end

function p.user_wikisource_for(frame) return p._user_wikisource_for(getArgs(frame)) end

return p