3,206
回編集
出典元未記載の記事のご利用を複数件確認しております。運営会社は、ご利用のみなさまに以下の対応をお願いしております。
当サイトの記事を出典として利用される場合は、『クリエイティブ・コモンズ 表示-継承』のライセンスで利用できますが、出典の表記が必須となります。つきましては、ご利用の際には媒体や利用方法、リンクの記載に関係なく、出典元表記【出典: VTuber百科事典『VRpedia World』】をお願いいたします。
運営:VRpedia World日本運営本部 運営委員会 (トーク) とほか関連会社
(ページの作成:「-- This module implements {{documentation}}. -- Get required modules. local getArgs = require('Module:Arguments').getArgs local messageBox = require('Module:Message box') -- Get the config table. local cfg = mw.loadData('Module:Documentation/config') local p = {} -- Often-used functions. local ugsub = mw.ustring.gsub ---------------------------------------------------------------------------- -- Helper functions -- -- These are defined as local functions, but a…」) |
編集の要約なし タグ: 差し戻し済み |
||
7行目: | 7行目: | ||
-- Get the config table. | -- Get the config table. | ||
local cfg = mw.loadData('Module:Documentation/config') | local cfg = mw.loadData('Module:Documentation/config') | ||
local i18n = mw.loadData('Module:Documentation/i18n') | |||
local p = {} | local p = {} | ||
33行目: | 33行目: | ||
expectType = expectType or 'string' | expectType = expectType or 'string' | ||
if type(msg) ~= expectType then | if type(msg) ~= expectType then | ||
error(' | error(require('Module:TNT').format('I18n/Documentation', 'cfg-error-msg-type', cfgKey, expectType, type(msg)), 2) | ||
end | end | ||
if not valArray then | if not valArray then | ||
41行目: | 41行目: | ||
local function getMessageVal(match) | local function getMessageVal(match) | ||
match = tonumber(match) | match = tonumber(match) | ||
return valArray[match] or error(' | return valArray[match] or error(require('Module:TNT').format('I18n/Documentation', 'cfg-error-msg-empty', '$' .. match, cfgKey), 4) | ||
end | end | ||
local ret = ugsub(msg, '$([1-9][0-9]*)', getMessageVal) | |||
return ret | |||
end | end | ||
81行目: | 82行目: | ||
ret[#ret + 1] = select(i, ...) | ret[#ret + 1] = select(i, ...) | ||
end | end | ||
return '<small style="font-style: normal;">(' .. table.concat(ret, ' | ') .. ')</small>' | |||
return '< | |||
end | end | ||
113行目: | 112行目: | ||
---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ||
-- | -- Load TemplateStyles | ||
---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ||
p.main = function(frame) | |||
local parent = frame.getParent(frame) | |||
local output = p._main(parent.args) | |||
return frame:extensionTag{ name='templatestyles', args = { src= message('templatestyles-scr') } } .. output | |||
end | end | ||
---------------------------------------------------------------------------- | |||
-- Main function | |||
---------------------------------------------------------------------------- | |||
function p._main(args) | function p._main(args) | ||
130行目: | 129行目: | ||
-- This function defines logic flow for the module. | -- This function defines logic flow for the module. | ||
-- @args - table of arguments passed by the user | -- @args - table of arguments passed by the user | ||
-- | |||
-- Messages: | |||
-- 'main-div-id' --> 'template-documentation' | |||
-- 'main-div-classes' --> 'template-documentation iezoomfix' | |||
--]] | --]] | ||
local env = p.getEnvironment(args) | local env = p.getEnvironment(args) | ||
local root = mw.html.create() | local root = mw.html.create() | ||
root | root | ||
:wikitext(p.protectionTemplate(env)) | :wikitext(p.protectionTemplate(env)) | ||
:wikitext(p.sandboxNotice(args, env)) | :wikitext(p.sandboxNotice(args, env)) | ||
-- This div tag is from {{documentation/start box}}, but moving it here | |||
-- so that we don't have to worry about unclosed tags. | |||
:tag('div') | :tag('div') | ||
:attr('id', message('main-div-id')) | |||
:addClass(message('main-div-class')) | |||
:wikitext(p._startBox(args, env)) | |||
:wikitext(p._content(args, env)) | |||
:done() | :done() | ||
:wikitext(p._endBox(args, env)) | |||
:wikitext(p.addTrackingCategories(env)) | :wikitext(p.addTrackingCategories(env)) | ||
return tostring(root) | |||
return | |||
end | end | ||
168行目: | 158行目: | ||
function p.getEnvironment(args) | function p.getEnvironment(args) | ||
--[[ | --[[ | ||
-- Returns a table with information about the environment, including title | -- Returns a table with information about the environment, including title objects and other namespace- or | ||
-- path-related data. | |||
-- @args - table of arguments passed by the user | -- @args - table of arguments passed by the user | ||
-- | -- | ||
294行目: | 284行目: | ||
function envFuncs.docSpace() | function envFuncs.docSpace() | ||
-- The documentation namespace number. For most namespaces this is the | -- The documentation namespace number. For most namespaces this is the same as the | ||
-- | -- subject namespace. However, pages in the Article, File, MediaWiki or Category | ||
-- | -- namespaces must have their /doc, /sandbox and /testcases pages in talk space. | ||
local subjectSpace = env.subjectSpace | local subjectSpace = env.subjectSpace | ||
if subjectSpace == 0 or subjectSpace == 6 or subjectSpace == 8 or subjectSpace == 14 then | if subjectSpace == 0 or subjectSpace == 6 or subjectSpace == 8 or subjectSpace == 14 then | ||
323行目: | 312行目: | ||
local compareUrl = mw.uri.fullUrl( | local compareUrl = mw.uri.fullUrl( | ||
'Special:ComparePages', | 'Special:ComparePages', | ||
{ page1 = templateTitle.prefixedText, page2 = sandboxTitle.prefixedText} | {page1 = templateTitle.prefixedText, page2 = sandboxTitle.prefixedText} | ||
) | ) | ||
return tostring(compareUrl) | return tostring(compareUrl) | ||
337行目: | 326行目: | ||
-- Auxiliary templates | -- Auxiliary templates | ||
---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ||
function p.sandboxNotice(args, env) | function p.sandboxNotice(args, env) | ||
360行目: | 337行目: | ||
-- 'sandbox-notice-blurb' --> 'This is the $1 for $2.' | -- 'sandbox-notice-blurb' --> 'This is the $1 for $2.' | ||
-- 'sandbox-notice-diff-blurb' --> 'This is the $1 for $2 ($3).' | -- 'sandbox-notice-diff-blurb' --> 'This is the $1 for $2 ($3).' | ||
-- 'sandbox-notice-pagetype-template' --> '[[Wikipedia:Template test cases|template sandbox]] page' | -- 'sandbox-notice-pagetype-template' --> '[[w:Wikipedia:Template test cases|template sandbox]] page' | ||
-- 'sandbox-notice-pagetype-module' --> '[[Wikipedia:Template test cases|module sandbox]] page' | -- 'sandbox-notice-pagetype-module' --> '[[w:Wikipedia:Template test cases|module sandbox]] page' | ||
-- 'sandbox-notice-pagetype-other' --> 'sandbox page' | -- 'sandbox-notice-pagetype-other' --> 'sandbox page' | ||
-- 'sandbox-notice-compare-link-display' --> 'diff' | -- 'sandbox-notice-compare-link-display' --> 'diff' | ||
372行目: | 349行目: | ||
local templateTitle = env.templateTitle | local templateTitle = env.templateTitle | ||
local subjectSpace = env.subjectSpace | local subjectSpace = env.subjectSpace | ||
if not (subjectSpace and title and sandboxTitle and templateTitle | if not (subjectSpace and title and sandboxTitle and templateTitle and mw.title.equals(title, sandboxTitle)) then | ||
return nil | return nil | ||
end | end | ||
382行目: | 358行目: | ||
-- "This is the template sandbox for [[Template:Foo]] (diff)." | -- "This is the template sandbox for [[Template:Foo]] (diff)." | ||
local text = '' | local text = '' | ||
local frame = mw.getCurrentFrame() | |||
local isPreviewing = frame:preprocess('{{REVISIONID}}') == '' -- True if the page is being previewed. | |||
local pagetype | local pagetype | ||
if subjectSpace == 10 then | if subjectSpace == 10 then | ||
392行目: | 370行目: | ||
local templateLink = makeWikilink(templateTitle.prefixedText) | local templateLink = makeWikilink(templateTitle.prefixedText) | ||
local compareUrl = env.compareUrl | local compareUrl = env.compareUrl | ||
if compareUrl then | if isPreviewing or not compareUrl then | ||
text = text .. message('sandbox-notice-blurb', {pagetype, templateLink}) | |||
else | |||
local compareDisplay = message('sandbox-notice-compare-link-display') | local compareDisplay = message('sandbox-notice-compare-link-display') | ||
local compareLink = makeUrlLink(compareUrl, compareDisplay) | local compareLink = makeUrlLink(compareUrl, compareDisplay) | ||
text = text .. message('sandbox-notice-diff-blurb', {pagetype, templateLink, compareLink}) | text = text .. message('sandbox-notice-diff-blurb', {pagetype, templateLink, compareLink}) | ||
end | end | ||
-- Get the test cases page blurb if the page exists. This is something like | -- Get the test cases page blurb if the page exists. This is something like | ||
416行目: | 394行目: | ||
end | end | ||
-- Add the sandbox to the sandbox category. | -- Add the sandbox to the sandbox category. | ||
text = text .. makeCategoryLink(message('sandbox-category')) | |||
omargs.text = text | |||
omargs.class = message('sandbox-class') | |||
local ret = '<div style="clear: both;"></div>' | |||
ret = ret .. messageBox.main('ombox', omargs) | |||
return ret | |||
end | end | ||
429行目: | 408行目: | ||
-- 'protection-template' --> 'pp-template' | -- 'protection-template' --> 'pp-template' | ||
-- 'protection-template-args' --> {docusage = 'yes'} | -- 'protection-template-args' --> {docusage = 'yes'} | ||
local protectionLevels = env.protectionLevels | local title = env.title | ||
local protectionLevels | |||
local protectionTemplate = message('protection-template') | |||
local namespace = title.namespace | |||
if not (protectionTemplate and (namespace == 10 or namespace == 828)) then | |||
-- Don't display the protection template if we are not in the template or module namespaces. | |||
return nil | |||
end | |||
protectionLevels = env.protectionLevels | |||
if not protectionLevels then | if not protectionLevels then | ||
return nil | return nil | ||
end | end | ||
local | local editLevels = protectionLevels.edit | ||
local | local moveLevels = protectionLevels.move | ||
if moveLevels and moveLevels[1] == 'sysop' or editLevels and editLevels[1] then | |||
-- The page is full-move protected, or full, template, or semi-protected. | |||
local frame = mw.getCurrentFrame() | |||
return frame:expandTemplate{title = protectionTemplate, args = message('protection-template-args', nil, 'table')} | |||
-- The page is | else | ||
return nil | |||
end | end | ||
end | end | ||
472行目: | 450行目: | ||
local links | local links | ||
local content = args.content | local content = args.content | ||
if not content | if not content then | ||
-- No need to include the links if the documentation is on the template page itself. | -- No need to include the links if the documentation is on the template page itself. | ||
local linksData = p.makeStartBoxLinksData(args, env) | local linksData = p.makeStartBoxLinksData(args, env) | ||
511行目: | 489行目: | ||
return nil | return nil | ||
end | end | ||
if docTitle.isRedirect then | if docTitle.isRedirect then | ||
docTitle = docTitle.redirectTarget | docTitle = docTitle.redirectTarget | ||
end | end | ||
519行目: | 497行目: | ||
data.docTitle = docTitle | data.docTitle = docTitle | ||
-- View, display, edit, and purge links if /doc exists. | -- View, display, edit, and purge links if /doc exists. | ||
data.viewLinkDisplay = | data.viewLinkDisplay = i18n['view-link-display'] | ||
data.editLinkDisplay = | data.editLinkDisplay = i18n['edit-link-display'] | ||
data.historyLinkDisplay = | data.historyLinkDisplay = i18n['history-link-display'] | ||
data.purgeLinkDisplay = | data.purgeLinkDisplay = i18n['purge-link-display'] | ||
-- Create link if /doc doesn't exist. | -- Create link if /doc doesn't exist. | ||
local preload = args.preload | local preload = args.preload | ||
535行目: | 513行目: | ||
end | end | ||
data.preload = preload | data.preload = preload | ||
data.createLinkDisplay = | data.createLinkDisplay = i18n['create-link-display'] | ||
return data | return data | ||
end | end | ||
580行目: | 558行目: | ||
-- | -- | ||
-- Messages: | -- Messages: | ||
-- 'documentation-icon-wikitext' --> '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]' | -- 'documentation-icon-wikitext' --> '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=Documentation icon]]' | ||
-- 'template-namespace-heading' --> 'Template documentation' | -- 'template-namespace-heading' --> 'Template documentation' | ||
-- 'module-namespace-heading' --> 'Module documentation' | -- 'module-namespace-heading' --> 'Module documentation' | ||
-- 'file-namespace-heading' --> 'Summary' | -- 'file-namespace-heading' --> 'Summary' | ||
-- 'other-namespaces-heading' --> 'Documentation' | -- 'other-namespaces-heading' --> 'Documentation' | ||
-- 'start-box-linkclasses' --> 'mw-editsection-like plainlinks' | |||
-- 'start-box-link-id' --> 'doc_editlinks' | |||
-- 'testcases-create-link-display' --> 'create' | -- 'testcases-create-link-display' --> 'create' | ||
--]=] | --]=] | ||
604行目: | 584行目: | ||
data.heading = heading | data.heading = heading | ||
elseif subjectSpace == 10 then -- Template namespace | elseif subjectSpace == 10 then -- Template namespace | ||
data.heading = | data.heading = i18n['template-namespace-heading'] | ||
elseif subjectSpace == 828 then -- Module namespace | elseif subjectSpace == 828 then -- Module namespace | ||
data.heading = | data.heading = i18n['module-namespace-heading'] | ||
elseif subjectSpace == 6 then -- File namespace | elseif subjectSpace == 6 then -- File namespace | ||
data.heading = | data.heading = i18n['file-namespace-heading'] | ||
else | else | ||
data.heading = | data.heading = i18n['other-namespaces-heading'] | ||
end | end | ||
-- Data for the [view][edit][history][purge] or [create] links. | -- Data for the [view][edit][history][purge] or [create] links. | ||
if links then | if links then | ||
data.linksClass = message('start-box-linkclasses') | |||
data. | data.linksId = message('start-box-link-id') | ||
data.links = links | data.links = links | ||
end | end | ||
637行目: | 608行目: | ||
local sbox = mw.html.create('div') | local sbox = mw.html.create('div') | ||
sbox | sbox | ||
:addClass(message('header-div-class')) | |||
:addClass(message(' | :tag('div') | ||
:addClass(message('heading-div-class')) | |||
:tag(' | |||
:addClass( | |||
:wikitext(data.heading) | :wikitext(data.heading) | ||
local links = data.links | local links = data.links | ||
if links then | if links then | ||
sbox:tag(' | sbox | ||
:tag('div') | |||
:addClass(data.linksClass) | |||
:attr('id', data.linksId) | |||
:wikitext(links) | |||
end | end | ||
return tostring(sbox) | return tostring(sbox) | ||
668行目: | 637行目: | ||
local content = args.content | local content = args.content | ||
if not content and docTitle and docTitle.exists then | if not content and docTitle and docTitle.exists then | ||
content = args._content or mw.getCurrentFrame():expandTemplate{title = docTitle | content = args._content or mw.getCurrentFrame():expandTemplate{title = docTitle} | ||
end | end | ||
-- The line breaks below are necessary so that "=== Headings ===" at the start and end | -- The line breaks below are necessary so that "=== Headings ===" at the start and end | ||
-- of docs are interpreted correctly. | -- of docs are interpreted correctly. | ||
local cbox = mw.html.create('div') | |||
cbox | |||
:addClass(message('content-div-class')) | |||
:wikitext('\n' .. (content or '') .. '\n') | |||
return tostring(cbox) | |||
end | end | ||
698行目: | 671行目: | ||
-- @args - a table of arguments passed by the user | -- @args - a table of arguments passed by the user | ||
-- @env - environment table containing title objects, etc., generated with p.getEnvironment | -- @env - environment table containing title objects, etc., generated with p.getEnvironment | ||
--]=] | --]=] | ||
724行目: | 696行目: | ||
end | end | ||
-- Assemble the | -- Assemble the footer text field. | ||
local text = '' | local text = '' | ||
if linkBox then | if linkBox then | ||
734行目: | 706行目: | ||
-- Add sandbox and testcases links. | -- Add sandbox and testcases links. | ||
-- "Editors can experiment in this template's sandbox and testcases pages." | -- "Editors can experiment in this template's sandbox and testcases pages." | ||
text = text .. (p.makeExperimentBlurb(args, env) or '') .. '<br />' | text = text .. (p.makeExperimentBlurb(args, env) or '') | ||
text = text .. '<br />' | |||
if not args.content and not args[1] then | if not args.content and not args[1] then | ||
-- "Please add categories to the /doc subpage." | -- "Please add categories to the /doc subpage." | ||
748行目: | 721行目: | ||
end | end | ||
end | end | ||
local | local ebox = mw.html.create('div') | ||
ebox | |||
:addClass(message('footer-div-class')) | |||
:addClass(message(' | |||
:wikitext(text) | :wikitext(text) | ||
return tostring(ebox) | |||
return | |||
end | end | ||
771行目: | 739行目: | ||
-- 'history-link-display' --> 'history' | -- 'history-link-display' --> 'history' | ||
-- 'transcluded-from-blurb' --> | -- 'transcluded-from-blurb' --> | ||
-- 'The above [[Wikipedia:Template documentation|documentation]] | -- 'The above [[w:Wikipedia:Template documentation|documentation]] | ||
-- is [[ | -- is [[w:Wikipedia:Transclusion|transcluded]] from $1.' | ||
-- 'module-preload' --> 'Template:Documentation/preload-module-doc' | -- 'module-preload' --> 'Template:Documentation/preload-module-doc' | ||
-- 'create-link-display' --> 'create' | -- 'create-link-display' --> 'create' | ||
-- 'create-module-doc-blurb' --> | -- 'create-module-doc-blurb' --> | ||
-- 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].' | -- 'You might want to $1 a documentation page for this [[w:Wikipedia:Lua|Scribunto module]].' | ||
--]=] | --]=] | ||
local docTitle = env.docTitle | local docTitle = env.docTitle | ||
if not docTitle then | if not docTitle or args.content then | ||
return nil | return nil | ||
end | end | ||
787行目: | 755行目: | ||
local docLink = makeWikilink(docTitle.prefixedText) | local docLink = makeWikilink(docTitle.prefixedText) | ||
local editUrl = docTitle:fullUrl{action = 'edit'} | local editUrl = docTitle:fullUrl{action = 'edit'} | ||
local editDisplay = | local editDisplay = i18n['edit-link-display'] | ||
local editLink = makeUrlLink(editUrl, editDisplay) | local editLink = makeUrlLink(editUrl, editDisplay) | ||
local historyUrl = docTitle:fullUrl{action = 'history'} | local historyUrl = docTitle:fullUrl{action = 'history'} | ||
local historyDisplay = | local historyDisplay = i18n['history-link-display'] | ||
local historyLink = makeUrlLink(historyUrl, historyDisplay) | local historyLink = makeUrlLink(historyUrl, historyDisplay) | ||
ret = message('transcluded-from-blurb', {docLink}) | ret = message('transcluded-from-blurb', {docLink}) | ||
799行目: | 767行目: | ||
-- /doc does not exist; ask to create it. | -- /doc does not exist; ask to create it. | ||
local createUrl = docTitle:fullUrl{action = 'edit', preload = message('module-preload')} | local createUrl = docTitle:fullUrl{action = 'edit', preload = message('module-preload')} | ||
local createDisplay = | local createDisplay = i18n['create-link-display'] | ||
local createLink = makeUrlLink(createUrl, createDisplay) | local createLink = makeUrlLink(createUrl, createDisplay) | ||
ret = message('create-module-doc-blurb', {createLink}) | ret = message('create-module-doc-blurb', {createLink}) | ||
872行目: | 840行目: | ||
local mirrorPreload = message('mirror-link-preload') | local mirrorPreload = message('mirror-link-preload') | ||
local mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = mirrorPreload, summary = mirrorSummary} | local mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = mirrorPreload, summary = mirrorSummary} | ||
local mirrorDisplay = message('mirror-link-display') | local mirrorDisplay = message('mirror-link-display') | ||
local mirrorLink = makeUrlLink(mirrorUrl, mirrorDisplay) | local mirrorLink = makeUrlLink(mirrorUrl, mirrorDisplay) | ||
886行目: | 851行目: | ||
local testcasesEditDisplay = message('testcases-edit-link-display') | local testcasesEditDisplay = message('testcases-edit-link-display') | ||
local testcasesEditLink = makeUrlLink(testcasesEditUrl, testcasesEditDisplay) | local testcasesEditLink = makeUrlLink(testcasesEditUrl, testcasesEditDisplay) | ||
testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink) | |||
else | else | ||
local testcasesPreload | local testcasesPreload |