--imports local WIM = WIM; local _G = _G; local time = time; local date = date; --set namespace setfenv(1, WIM); local TimeStamps = WIM.CreateModule("TimeStamps", true); -- define available timeStamps local formats = { "%I:%M", -- HH:MM (12hr) "%I:%M %p", -- HH:MM AM/PM (12hr) "%H:%M", -- HH:MM (24hr) "%I:%M:%S", -- HH:MM:SS (12hr) "%I:%M:%S %p",-- HH:MM:SS AM/PM (12hr) "%H:%M:%S" -- HH:MM:SS (24hr) }; db_defaults.timeStampFormat = formats[3]; local function addTimeStamp(msg, chatDisplay) return GetTimeStamp(nil, chatDisplay).." "..msg; end function TimeStamps:OnEnable() RegisterStringModifier(addTimeStamp); end function TimeStamps:OnDisable() UnregisterStringModifier(addTimeStamp); end function TimeStamps:OnWindowDestroyed(win) win.lastDate = nil; end -- Global function GetTimeStamp(cTime, chatDisplay) local win = chatDisplay and chatDisplay.parentWindow or chatDisplay; cTime = cTime or (win and win.nextStamp) or time(); local cDate = _G.date(L["_DateFormat"], cTime); local color = win and win.nextStampColor or db.displayColors.sysMsg; if(win and win.lastDate ~= cDate) then chatDisplay:AddMessage(" "); chatDisplay:AddMessage("["..cDate.."]", color.r, color.g, color.b); end local stamp = "|cff"..RGBPercentToHex(color.r, color.g, color.b)..date(db.timeStampFormat, cTime).."|r"; if(win) then win.lastDate = cDate; win.nextChatDisplay = nil; win.nextStamp = nil; win.nextStampColor = nil; end return stamp; end function GetTimeStampFormats() return formats; end