"모듈:Unsigned/ip"의 두 판 사이의 차이

백괴사전, 너희 모두의 백과사전
둘러보기로 가기 검색하러 가기
(새 문서: 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+$",...)
 
 
35번째 줄: 35번째 줄:
 
local ret = '<span class="autosigned" style="font-size:85%;">—&nbsp;'
 
local ret = '<span class="autosigned" style="font-size:85%;">—&nbsp;'
 
local signpattern = "^%d+년%s+%d+월%s+%d+일"
 
local signpattern = "^%d+년%s+%d+월%s+%d+일"
local defaultuser = "홍길동"
+
local defaultuser = "127.0.0.1"
 
local username = ""
 
local username = ""
 
local date = ""
 
local date = ""
42번째 줄: 42번째 줄:
 
if args[2]:match(signpattern) then
 
if args[2]:match(signpattern) then
 
return '<span class="autosigned" style="color:red; ' ..
 
return '<span class="autosigned" style="color:red; ' ..
'font-size:85%;">[[위키백과:서명|서명]] 오류: 두 변수에 날짜가 ' ..
+
'font-size:85%;">서명 오류: 두 변수에 날짜가 ' ..
 
'모두 올 수 없습니다.</span>'
 
'모두 올 수 없습니다.</span>'
 
end
 
end

2021년 7월 23일 (금) 03:18 기준 최신판

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 = "127.0.0.1"
	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