置顶公告:【置顶】关于临时开启评论区所有功能的公告(2022.10.22) | 【置顶】关于本站Widget恢复使用的公告
  • 你好~!欢迎来到萌娘百科镜像站!如需查看或编辑,请联系本站管理员注册账号。
  • 本镜像站和其他萌娘百科的镜像站无关,请注意分别。

Module:长标题

贴贴♀百科,万娘皆可贴的百科全书!转载请标注来源页面的网页链接,并声明引自贴贴百科。内容不可商用。
跳到导航 跳到搜索
Template-info.svg 模块文档  [创建] [刷新]
local module = {}

local array = require('Module:var-array')

function module.main(frame)
	local data = array.get('长标题');
	-- mw.logObject(data[0])
	
	
	local item = {};
	function len(a)
		local rlt = 0;
		for i = 1, mw.ustring.len(a) do
			local char = mw.ustring.sub(a, i, i);
			local charnum = mw.ustring.byte(char);
			if (charnum > 33 and charnum < 126) 
					or char == '‘'
					or char == '’'
					or char == '“'
					or char == '”'
					or char == '「'
					or char == '」'
					or char == '《'
					or char == '》'
					or char == '('
					or char == ')'
					or char == '【'
					or char == '】'
					or char == '{'
					or char == '}' then
				rlt = rlt + 0.5;
			elseif char == ' '
					or char == ' '
					or char == '\n'
					or char == '\t' then
				-- do nothing
			else
				rlt = rlt + 1;
			end
		end
		return rlt;
	end
	function cmp (a, b)
		return a.len > b.len;
	end
	for i = 1, #data do
		local sort_key = data[i][1]:gsub('<%s-/?del.->', ''):gsub('<%s-/?span.->', '');
		if (string.match(sort_key, '^%[%[.-%|(.-)%]%]$')) then
			sort_key = string.match(sort_key, '%[%[.-%|(.-)%]%]');
		elseif (string.match(sort_key, '^%[%[(.-)%]%]$')) then
			sort_key = string.match(sort_key, '^%[%[(.-)%]%]$');
		end
		-- mw.log(sort_key);
		local length;
		if (data[i][5] ~= nil and data[i][5] ~= '') then
			length = tonumber(data[i][5]);
		else
			length = len(sort_key);
		end
		-- mw.log(data[i][5]);
		table.insert(item, {
			name=data[i][1],
			short=data[i][2],
			theme=data[i][3],
			original_number=data[i][4],
			len=length
		})
	end
	
	table.sort(item, cmp)
	
	local rlt = '';
	for i = 1, #item do
		rlt = rlt..'|-\n|'..item[i].name..'||'..item[i].short..'||<span class="long-title-theme">'..item[i].theme..'</span>||'..item[i].original_number..'||'..item[i].len..'\n'
	end
	return rlt..'\n|}';
end

return module