中文Minecraft Wiki是完全公开的。欢迎持续参与翻译工作 中文Minecraft Wiki是完全公开的。欢迎持续参与翻译工作Minecraft中文Wiki微博现已创建!或许有兴趣去看看Minecraft中文Wiki微博现已创建!或许有兴趣去看看翻译或创建页面之前,不妨看看译名标准化Wiki条例页面。翻译或创建页面之前,不妨看看译名标准化Wiki条例页面。需要管理员的协助?在管理员告示板留言也许可以帮到您。需要管理员的协助?在管理员告示板留言也许可以帮到您。想与其他用户进行编辑上的沟通?社区专页正是为此创建的。想与其他用户进行编辑上的沟通?社区专页正是为此创建的。

模块:Autolink

来自Minecraft Wiki
跳转至: 导航搜索
[创建 | 历史 | 清除缓存]文档页面
此模块没有文档页面。如果你知道如何使用模块,请创建它。
local p = {}

local block = mw.loadData( 'Module:Autolink/Block' )
local item = mw.loadData( 'Module:Autolink/Item' )
local other = mw.loadData( 'Module:Autolink/Other' )
local exclusive = mw.loadData( 'Module:Autolink/Exclusive' )
local colors = { 'white ', 'orange ', 'magenta ', 'light blue ', 'yellow ', 'lime ', 'pink ', 'gray ', 'light gray ', 'cyan ', 'purple ', 'blue ', 'brown ', 'green ', 'red ', 'black ', 'silver ' }
local colorc = { '白色', '橙色', '品红色', '淡蓝色', '黄色', '黄绿色', '粉红色', '灰色', '淡灰色', '青色', '紫色', '蓝色', '棕色', '绿色', '红色', '黑色', '淡灰色'}

local function Set (list)
  local set = {}
  for _, l in ipairs(list) do set[l] = true end
  return set
end

local coloredItems = Set { 'firework star', 'hardened clay', 'stained clay', 'banner', 'carpet', 'concrete', 'concrete powder', 'glazed terracotta', 'terracotta', 'shield', 'shulker box', 'stained glass', 'stained glass pane', 'wool', 'bed', 'hardened glass', 'hardened stained glass', 'balloon', 'glow stick', 'hardened glass pane', 'hardened glass', 'sparkler' }

-- used by templates, called via #invoke
function p.link( f )
    local args = f
	if f == mw.getCurrentFrame() then 
		args = require( 'Module:ProcessArgs' ).merge( true )
	end
    return p.core( args[1] , args[2] )
end

-- used by other modules, called via require()
function p.xlink( str , mode )
    if str == nil then
       return nil
    end
    local arg = string.lower(str)
    return p.core( str, mode )
end

-- core function
function p.core( str , mode )
    local arg = string.lower(str)
    local pe
    if string.sub(arg, -3) == ' pe' or string.sub(arg, -3) == ' be' then
        pe = 1
        arg = string.sub(arg, 0, -4)
    end
    local color
    for i, c in ipairs( colors ) do
    	if string.find(arg, c) == 1 then
            local item = string.sub(arg, string.len(c)+1)
            if coloredItems[item] then
				color = colorc[i]
                arg = item
            end
       end
    end
    local result = block[arg]
    if result == nil then
       result = item[arg]
    end
    if result == nil then
       --check for spawn egg
       if string.len(arg) < 10 or string.find(arg,' spawn egg',-10,true) == nil then
          result = other[arg]
       else
          local mob = other[string.sub(arg,0,-11)]
          index = string.find(mob,'|',0,true)
          if index ~= nil then
             mob = string.sub(mob, index+1)
          end
          result = '刷怪蛋|' .. mob .. '刷怪蛋'
       end
    end
    if result == nil then
       result = exclusive[arg]
    end
    local index
    if result == nil then
       result = str
       index = string.find(result,'|',0,true)
    else
       if color then
          result = result .. '|' .. color .. result   
       end
       index = string.find(result,'|',0,true)
       if pe then
          if index then
             result = result .. '(基岩版)'
          else
             result = result .. '|' .. result .. '(基岩版)'
             index = string.find(result,'|',0,true)
          end
       end
    end
    
    if mode and index then
       -- return the fully translated part
       if mode == 'nolink' then 
          result = string.sub(result, index+1)
       end
       -- return the page link part
       if mode == 'linkonly' then
          result = string.sub(result, 1 , index-1)
       end
    end 
    return result
end

-- list out all entries with the type
function p.list( f )
    local args = f
	if f == mw.getCurrentFrame() then 
		args = require( 'Module:ProcessArgs' ).merge( true )
	end
    local type = args[1]
    type = string.lower(type)

    local list = nil
    if type == 'block' then
        list = block
    end
    if type == 'item' then
        list = item
    end
    if type == 'other' then
        list = other
    end
    if list == nil then
        return ''
    end
	local result = ''
	local t = {}
	
    for k,_ in pairs(list) do
		table.insert(t, k)
	end
	
	table.sort(t)
	
	local limit = 50
	local count = 0
	
	local table = nil
	local header = mw.html.create('tr')
	header:tag('th'):wikitext('英文名称')
	header:tag('th'):wikitext('中文名称')
	
	for _,v in ipairs(t) do
		if count == 0 then 
			if table ~= nil then
				result = result .. tostring(table)
			end
			table = mw.html.create('table'):attr('align', 'left'):css('float', 'left'):css('margin', '2px'):css('border', '1px solid silver'):css('text-align', 'center'):css('background-color', '#fff'):node(header)
		end
	
		local row = mw.html.create('tr')
		row:tag('td'):wikitext((v:gsub('(%l)(%w*)', function(a,b) return a:upper()..b end)))
		row:tag('td'):wikitext(p.xlink(v, 'nolink'))
		table:node(row)
		count = count + 1
		if count == limit then
			count = 0
		end
	end
	
	result = result .. tostring(table)
	return result
end

return p
Promotional Content