2023年政策修订增补工作正在进行中,欢迎参与!
  • Moegirl.ICU:萌娘百科流亡社群 581077156(QQ),欢迎对萌娘百科运营感到失望的编辑者加入
  • Moegirl.ICU:账号认领正在试运行,有意者请参照账号认领流程

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