切换搜索
搜索
切换菜单
notifications
切换个人菜单
查看“模块:Cite RSI”的源代码
来自星际公民中文百科
查看
阅读
查看源代码
查看历史
associated-pages
模块
讨论
更多操作
←
模块:Cite RSI
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:确认用户
您可以查看和复制此页面的源代码。
local p = {} local args --- Helper function checking if a substring is in a string -- -- @param needle string - Value to search for -- @param haystack string - String to search in -- -- @return bool - True if found local function stringContains( needle, haystack ) return string.find( mw.ustring.lower( haystack ), needle, 1, true ) end --- Remove hyphen and format string into title case -- -- @param title string -- -- @return string local function formatTitle( title ) local titleCase = require( 'Module:String2' ).title if title and title ~= '' then -- Replace hyphens with space title = string.gsub( title, '-', ' ' ) -- Format into title case title = titleCase{ args={ title } } end return title end -- @param url string -- -- @return string local function sanitizeURL( url ) local santizedURL if stringContains('robertsspaceindustries.com', url) then -- Remove 'www.' from the link santizedURL = mw.ustring.gsub( url, 'www%.', '' ) else -- Add "https://robertsspaceindustries.com/" to url if it is not present santizedURL = 'https://robertsspaceindustries.com/' .. url end return santizedURL end --- Determine which type of RSI website it is -- -- @param url string - RSI website URL -- -- @return string - Site type or nil if unknown local function getType( url ) local type -- type后面接的就是引用列表里条目后显示的简短文字 if stringContains( '/comm-link/', url ) then type = '通讯链接' elseif stringContains( '/galactapedia/', url ) then type = '银河百科' elseif stringContains( '/Spectrum/', url ) then type = '光谱论坛' elseif stringContains( '/pledge/', url ) then type = 'Pledge Store' elseif stringContains( '/starmap', url ) then type = '方舟星图' elseif stringContains( '/issue-council', url ) then type = '问题理事会' elseif stringContains( 'support.robertsspaceindustries', url ) then type = 'Knowledge Base' else type = nil end return type end local function getSubtype( url, type ) local subtype = nil if type == 'Comm-Link' then subtype = string.match( url, '/comm%-link/([%w-]+)/%d+-[%w-]+' ) end return formatTitle( subtype ) end local function getTitle( url, type ) local titleText local throwError = function() return error( 'Title can not be generated, please fill in the text parameter.' ) end -- Auto title generation, might not be accurate since special characters -- are escaped in the URL -- -- e.g. /comm-link/transmission/14710-Starfarer-Q-A-Part-1 if type == 'Comm-Link' then titleText = string.match( url, '/comm%-link/[%w-]+/%d+-([%w-]+)' ) -- e.g. /article/0j46Lzl8xm-torral-aggregate elseif type == 'Galactapedia' then titleText = 'Galactapedia: ' .. string.match( url, '/article/%w+-([%w-]+)' ) -- NOTE: Only support threads at the moment -- e.g. /thread/star-citizen-alpha-3-13-0-live-7319707-patch-notes elseif type == 'Spectrum' then titleText = string.match( url, '/thread/%w+-([%w-]+)' ) -- e.g. /hc/en-us/categories/360000295274-Updates-and-Info elseif type == 'Knowledge Base' then titleText = string.match( url, '/hc/.+/.+/%d+-([%w-]+)' ) -- Will still try its best to extact a title else local urlParts = mw.text.split(url, '[/]') titleText = urlParts[ #urlParts ] end return formatTitle( titleText ) end -- NOTE: Don't have internal link support yet function p.main( frame ) if args == nil then args = require( 'Module:Arguments' ).getArgs( frame ) end local url = sanitizeURL( args.url ) local type = getType( url ) local date = args.accessdate local title local output if args.text then title = args.text else title = getTitle( url, type ) end -- Maybe there is a smarter way? output = '<cite class="citation rsi_site">' .. '<span class="metadata citation-icon" title="RSI site">[[File:RSIsite.svg|x11px|link=]]</span>' .. '[' .. url .. ' ' .. title .. ']' if type then local subtype = getSubtype( url, type ) output = output .. '. ' if subtype then output = output .. '<i>' .. subtype .. '</i> - ' end output = output .. '<i>' .. type .. '</i>' end if date then output = output .. '. Retrieved ' .. date end return output end return p
本页使用的模板:
模板:Documentation
(
查看源代码
)
模板:Tl
(
查看源代码
)
模块:Cite RSI/doc
(
查看源代码
)
模块:Documentation
(
查看源代码
)
返回
模块:Cite RSI
。
Debug data: