匿名
未登录
创建账号
登录
The Land of StarLight
搜索
查看“模块:Autolink”的源代码
来自The Land of StarLight
命名空间
模块
讨论
更多
更多
页面操作
阅读
查看源代码
历史
←
模块:Autolink
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
local p = {} local default_interwiki = 'mcw' local self_interwiki = 'self' 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 earth = mw.loadData( 'Module:Autolink/Earth' ) local dungeons = mw.loadData( 'Module:Autolink/Dungeons' ) local modthing = mw.loadData( 'Module:Autolink/Mod' ) local colors = { ['black '] = '黑色', ['blue '] = '蓝色', ['brown '] = '棕色', ['cyan '] = '青色', ['gray '] = '灰色', ['green '] = '绿色', ['light blue '] = '淡蓝色', ['light gray '] = '淡灰色', ['lime '] = '黄绿色', ['magenta '] = '品红色', ['orange '] = '橙色', ['pink '] = '粉红色', ['purple '] = '紫色', ['red '] = '红色', ['silver '] = '淡灰色', ['white '] = '白色', ['yellow '] = '黄色', } 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', 'candle' } -- 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.invlink( args[1] , args[2] , args[3] ) end function p.invlink( str, mode, type ) local arg = str:gsub('-', ' '):lower() -- check for spawn egg if arg:find(' spawn egg$') then local mob = other['EntitySprite'][arg:sub(0, -11)] if mob == nil then error('missing mob entry: ' .. arg:sub(0, -11)) end local index = mob:find('|') if index then mob = mob:sub(index + 1) end return p.mode('刷怪蛋|' .. mob .. '刷怪蛋', mode) end local be local lce -- check for version suffix if arg:find(' pe$') or arg:find(' be$') then be = 1 arg = arg:sub(0, -4) end if arg:find(' lce$') then lce = 1 arg = arg:sub(0, -5) end -- check for 'spawn' if arg:find('^spawn ') then local mob = other['EntitySprite'][arg:sub(7)] if mob then local index = mob:find('|') if index then mob = mob:sub(index + 1) end local name = '刷怪蛋|生成' .. mob if be then return p.mode(name, mode, '(基岩版)') end if lce then return p.mode(name, mode, '(原主机版)') end return p.mode(name, mode) end end -- check for color prefix local color for k, v in pairs( colors ) do if arg:find(k) == 1 then local i = arg:sub(k:len() + 1) if coloredItems[i] then color = v arg = i break end end end local result if type and other[type] then result = other[type][arg] end if result == nil and type and earth[type] then result = earth[type][arg] end if result == nil and type and dungeons[type] then result = dungeons[type][arg] end if result == nil and type and type == 'ItemSprite' then result = item[arg] end if result == nil then result = block[arg] or item[arg] end if result == nil and arg:sub(-1) == 's' then local singular = arg:sub(0, -2) result = block[singular] or item[singular] end if result == nil then for _, list in pairs( other ) do result = list[arg] if result then break end end end if result == nil then for _, list in pairs( dungeons ) do result = list[arg] if result then break end end end if result == nil then result = exclusive[arg] or str end if result == nil then result = modthing[arg] or str return p.mode(result, mode) end if color then result = result .. '|' .. color .. result end if be then return p.mode(result, mode, '(基岩版)') end if lce then return p.mode(result, mode, '(原主机版)') end return p.mode(result, mode) end function p.mode( str, mode, suffix, interwiki ) if suffix then if str:find('|') then str = str .. suffix else str = str .. '|' .. str .. suffix end end if interwiki then if not (interwiki == self_interwiki) then if str:find('|') then str = interwiki .. ':' .. str else str = interwiki .. ':' .. str .. '|' .. str end end else if str:find('|') then str = default_interwiki .. ':' .. str else str = default_interwiki .. ':' .. str .. '|' .. str end end local index = str:find('|') -- return the translated part if index then if mode == 'nolink' then return str:sub(index + 1) end -- return the page link part if mode == 'linkonly' then return str:sub(1, index - 1) end end return str 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 = type:lower() local sprite = nil local list = nil if type == 'block' then list = block sprite = 'BlockSprite' elseif type == 'item' then list = item sprite = 'ItemSprite' elseif type == 'entity' then list = other['EntitySprite'] sprite = 'EntitySprite' elseif type == 'dungeonsitem' then list = dungeons['DungeonsItemSprite'] sprite = 'DungeonsItemSprite' elseif type == 'dungeonsentity' then list = dungeons['DungeonsEntitySprite'] sprite = 'DungeonsEntitySprite' elseif type == 'dungeonsenchantment' then list = dungeons['DungeonsEnchantmentSprite'] sprite = 'DungeonsEnchantmentSprite' elseif type == 'dungeonslevel' then list = dungeons['DungeonsLevelSprite'] sprite = 'DungeonsLevelSprite' end if list == nil then return '' end local spriteids = mw.loadData( 'Module:' .. sprite ).ids 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 frame = mw.getCurrentFrame() local itemlist = nil local header = mw.html.create('tr') header:tag('th'):wikitext('图标') header:tag('th'):wikitext('英文名称') header:tag('th'):wikitext('中文名称') for _, v in ipairs(t) do if count == 0 then if itemlist ~= nil then result = result .. tostring(itemlist) end itemlist = mw.html.create('table') :addClass('data-table') :node(header) end local row = mw.html.create('tr') if spriteids[v] or spriteids[mw.ustring.lower( v ):gsub( '[%s%+]', '-' )] then row:tag('td'):wikitext(frame:expandTemplate{ title = sprite, args = { v } }) else row:tag('td') end local words = {} v:gsub('[^%s]+', function(w) table.insert(words, w) end) for k, w in ipairs(words) do if w ~= 'of' and w ~= 'or' and w ~= 'o\'' then words[k] = w:gsub('(%l)(.+)', function(a, b) return a:upper() .. b end) end end row:tag('td'):wikitext(tostring(table.concat(words, ' '))) row:tag('td'):wikitext(p.mode(list[v], 'nolink')) itemlist:node(row) count = count + 1 if count == limit then count = 0 end end result = result .. tostring(itemlist) return result end return p
该页面使用的模板:
模块:Autolink/doc
(
查看源代码
)
返回
模块:Autolink
。
导航
快速跳转
TLSL(wiki首页)
- StarLight-Server
奇怪的折跃门
活跃玩家
重要领地合集
小黑屋
SLS官网
wiki工具
wiki工具
特殊页面
页面工具
页面工具
用户页面工具
更多
链入页面
相关更改
页面信息
页面日志