Module:DateThings

Revision as of 22:29, 1 December 2024 by JoshuaJSlone (talk | contribs)

Documentation for this module may be created at Module:DateThings/doc

local p = {}

--Copied from https://stackoverflow.com/questions/1426954/split-string-in-lua
function mysplit(inputstr, sep)
  if sep == nil then
    sep = "%s"
  end
  local t = {}
  for str in string.gmatch(inputstr, "([^"..sep.."]+)") do
    table.insert(t, str)
  end
  return t
end

function trim (s)
    return (string.gsub(s, "^%s*(.-)%s*$", "%1"))
end
    
function p.datesplit(frame)
	InputSeparator = ","
	OutputSeparator = "・"
	InputText = frame.args[1]
	
	DateList = mysplit(InputText,",")
	
	OutputText = ""
	OldYear = 0
	OldMonth = 0
	OldDay = 0
	
	for i, v in ipairs(DateList) do
		if i>1 then
			OutputText = OutputText .. OutputSeparator
		end
		
		DateBits = mysplit(trim(DateList[i]),"-")
		Year = DateBits[1]
		Month = DateBits[2]
		Day = DateBits[3]
		
		ThisDate = os.time{ year = Year, month = Month, day = Day }
		
		tempdate = os.date ("*t", ThisDate)
		Day = date.day
		
		--OutputText = OutputText .. trim(DateList[i])
		--OutputText = OutputText .. Year .. OutputSeparator .. Month .. OutputSeparator .. Day
		
		if Year==OldYear then
			if Month==OldMonth then
				OutputText = OutputText .. Day --Only the day is different
			else
				OutputText = OutputText .. Month .. "-" .. Day --Day and month are different
			end
		else
			--OutputText = OutputText .. Year .. "-" .. Month .. "-" .. Day --All three are different
			OutputText = OutputText .. os.date("[[%Y]] [[%B ", ThisDate) .. Day .. "]]"
		end
		
		OldYear = Year
		OldMonth = Month
	end

	--OutputText = Separator .. InputText .. Separator
	return OutputText
end





return p