모듈:Unsigned

okerawiki
Okera (토론 | 기여)님의 2023년 7월 12일 (수) 22:54 판 (새 문서: local p = {} local function endswith(String, End) return End == '' or string.sub(String,-string.len(End)) == End end local function trim(s) return s:gsub("^%s+", ""):gsub("%s+$", ""):gsub("\226\128\142", "") end local function addKstToStringIfItDoesNotEndWithKst(s) if s == "" or endswith(s, "~~~~") then return s end if not endswith(s, "(KST)") then return s .. " (KST)" end return s end local function getDay(s) return s:gsub("Mon", "월"):gsub("Tue", "화"):gsub("Wed...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)
둘러보기로 이동 검색으로 이동

이 모듈에 대한 설명문서는 모듈:Unsigned/설명문서에서 만들 수 있습니다

local p = {}

local function endswith(String, End)
	return End == '' or string.sub(String,-string.len(End)) == End
end

local function trim(s)
	return s:gsub("^%s+", ""):gsub("%s+$", ""):gsub("\226\128\142", "")
end

local function addKstToStringIfItDoesNotEndWithKst(s)
	if s == "" or endswith(s, "~~~~") then return s end
	if not endswith(s, "(KST)") then
		return s .. " (KST)"
	end
	return s
end

local function getDay(s)
	return s:gsub("Mon", "월"):gsub("Tue", "화"):gsub("Wed", "수")
	:gsub("Thu", "목"):gsub("Fri", "금"):gsub("Sat", "토")
	:gsub("Sun", "일")
end

local function getCurrentKstTime()
	local ksttime = os.time() + 9 * 60 * 60
	return os.date('%Y년 ', ksttime)
		.. os.date('%m월 ', ksttime):gsub("^0+", "")
		.. os.date('%d일 ', ksttime):gsub("^0+", "")
		.. '(' .. getDay(os.date('%a'), ksttime) .. ') '
		.. os.date('%H:%M (KST)', ksttime)
end

local function _main(args)
	local ret = '<span class="autosigned" style="font-size:85%;">—&nbsp;'
	local signpattern = "^%d+년%s+%d+월%s+%d+일"
	local defaultuser = "아무개"
	local username = ""
	local date = ""
	local delim = "‎ "
	if args[1]:match(signpattern) then
		if args[2]:match(signpattern) then
			return '<span class="autosigned" style="color:red; ' ..
			'font-size:85%;">서명 오류: 두 변수에 날짜가 ' ..
			'모두 올 수 없습니다.</span>'
		end
		if args[1]:match(delim) then
			username = args[1]:gsub("^.*" .. delim, "")
			date = args[1]:gsub(delim .. ".*", "")
		else
			username = args[2]
			date = args[1]
		end
	elseif args[2]:match(signpattern) then
		username = args[1]
		date = args[2]
	else
		if args[1] and args[1]:match("%S") then
			username = args[1]
		elseif args[2] and args[2]:match("%S") then
			username = args[2]
		end
	end
	if not username or not username:match("%S") then
		username = defaultuser
	end
	ret = ret .. "이 의견은 [[사용자:" .. username .. "|"
		.. username .. "]]님이 "
	if date and date:match("%S") then
		ret = ret .. addKstToStringIfItDoesNotEndWithKst(trim(date)) .. "에 "
	end

	ret = ret .. "작성하였으나, 서명을 하지 않아 "
		.. getCurrentKstTime() .. "에 다른 사용자가 추가하였습니다. "
		.. "의견을 남길 때에는 항상 의견 끝에 띄어쓰기를 하고 "
		.. "<code>--&#126;&#126;&#126;&#126;</code>를 입력해 주세요. "
		.. "저장할 때 자동으로 서명이 됩니다."
	ret = ret .. "</span>"
	return ret
end

function p.main(frame)
	local args
	if type(frame.args) == 'table' then
		args = frame.args
	else
		args = frame
	end
	return _main(args)
end

return p