「モジュール:Documentation」を編集中
ナビゲーションに移動
検索に移動
この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 | 編集中の文章 | ||
3行目: | 3行目: | ||
-- Get required modules. | -- Get required modules. | ||
local getArgs = require('Module:Arguments').getArgs | local getArgs = require('Module:Arguments').getArgs | ||
− | |||
-- Get the config table. | -- Get the config table. | ||
33行目: | 32行目: | ||
expectType = expectType or 'string' | expectType = expectType or 'string' | ||
if type(msg) ~= expectType then | if type(msg) ~= expectType then | ||
− | error(' | + | error('message: type error in message cfg.' .. cfgKey .. ' (' .. expectType .. ' expected, got ' .. type(msg) .. ')', 2) |
end | end | ||
if not valArray then | if not valArray then | ||
41行目: | 40行目: | ||
local function getMessageVal(match) | local function getMessageVal(match) | ||
match = tonumber(match) | match = tonumber(match) | ||
− | return valArray[match] or error(' | + | return valArray[match] or error('message: no value found for key $' .. match .. ' in message cfg.' .. cfgKey, 4) |
end | end | ||
− | + | return ugsub(msg, '$([1-9][0-9]*)', getMessageVal) | |
− | |||
end | end | ||
82行目: | 80行目: | ||
ret[#ret + 1] = select(i, ...) | ret[#ret + 1] = select(i, ...) | ||
end | end | ||
− | return '< | + | -- 'documentation-toolbar' |
+ | return '<span class="' .. message('toolbar-class') .. '">(' | ||
+ | .. table.concat(ret, ' | ') .. ')</span>' | ||
end | end | ||
112行目: | 112行目: | ||
---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ||
− | -- | + | -- Entry points |
---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ||
+ | |||
+ | function p.nonexistent(frame) | ||
+ | if mw.title.getCurrentTitle().subpageText == 'testcases' then | ||
+ | return frame:expandTemplate{title = 'module test cases notice'} | ||
+ | else | ||
+ | return p.main(frame) | ||
+ | end | ||
+ | end | ||
p.main = makeInvokeFunc('_main') | p.main = makeInvokeFunc('_main') | ||
121行目: | 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 | ||
− | |||
− | |||
− | |||
− | |||
--]] | --]] | ||
local env = p.getEnvironment(args) | local env = p.getEnvironment(args) | ||
local root = mw.html.create() | local root = mw.html.create() | ||
root | root | ||
+ | :wikitext(p._getModuleWikitext(args, env)) | ||
:wikitext(p.protectionTemplate(env)) | :wikitext(p.protectionTemplate(env)) | ||
:wikitext(p.sandboxNotice(args, env)) | :wikitext(p.sandboxNotice(args, env)) | ||
− | |||
− | |||
:tag('div') | :tag('div') | ||
− | + | -- 'documentation-container' | |
− | :addClass(message(' | + | :addClass(message('container')) |
:newline() | :newline() | ||
− | |||
− | |||
:tag('div') | :tag('div') | ||
− | : | + | -- 'documentation' |
+ | :addClass(message('main-div-classes')) | ||
+ | :newline() | ||
+ | :wikitext(p._startBox(args, env)) | ||
+ | :wikitext(p._content(args, env)) | ||
+ | :tag('div') | ||
+ | -- 'documentation-clear' | ||
+ | :addClass(message('clear')) | ||
+ | :done() | ||
:newline() | :newline() | ||
:done() | :done() | ||
+ | :wikitext(p._endBox(args, env)) | ||
:done() | :done() | ||
− | |||
:wikitext(p.addTrackingCategories(env)) | :wikitext(p.addTrackingCategories(env)) | ||
− | return tostring(root) | + | -- 'Module:Documentation/styles.css' |
+ | return mw.getCurrentFrame():extensionTag ( | ||
+ | 'templatestyles', '', {src=cfg['templatestyles'] | ||
+ | }) .. tostring(root) | ||
end | end | ||
155行目: | 167行目: | ||
function p.getEnvironment(args) | function p.getEnvironment(args) | ||
--[[ | --[[ | ||
− | -- Returns a table with information about the environment, including title objects and other namespace- or | + | -- 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 | ||
-- | -- | ||
281行目: | 293行目: | ||
function envFuncs.docSpace() | function envFuncs.docSpace() | ||
− | -- The documentation namespace number. For most namespaces this is | + | -- The documentation namespace number. For most namespaces this is the |
− | -- subject namespace. However, pages in the Article, File, | + | -- same as the subject namespace. However, pages in the Article, File, |
− | -- namespaces must have their /doc, /sandbox and /testcases pages in talk space. | + | -- 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 | ||
309行目: | 322行目: | ||
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) | ||
323行目: | 336行目: | ||
-- Auxiliary templates | -- Auxiliary templates | ||
---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ||
+ | |||
+ | p.getModuleWikitext = makeInvokeFunc('_getModuleWikitext') | ||
+ | |||
+ | function p._getModuleWikitext(args, env) | ||
+ | local currentTitle = mw.title.getCurrentTitle() | ||
+ | if currentTitle.contentModel ~= 'Scribunto' then return end | ||
+ | pcall(require, currentTitle.prefixedText) -- if it fails, we don't care | ||
+ | local moduleWikitext = package.loaded["Module:Module wikitext"] | ||
+ | if moduleWikitext then | ||
+ | return moduleWikitext.main() | ||
+ | end | ||
+ | end | ||
function p.sandboxNotice(args, env) | function p.sandboxNotice(args, env) | ||
346行目: | 371行目: | ||
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 and mw.title.equals(title, sandboxTitle)) then | + | if not (subjectSpace and title and sandboxTitle and templateTitle |
+ | and mw.title.equals(title, sandboxTitle)) then | ||
return nil | return nil | ||
end | end | ||
389行目: | 415行目: | ||
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 .. makeCategoryLink(message('sandbox-category')) |
− | + | ||
− | + | -- 'documentation-clear' | |
− | + | return '<div class="' .. message('clear') .. '"></div>' | |
− | + | .. require('Module:Message box').main('ombox', omargs) | |
end | end | ||
402行目: | 428行目: | ||
-- 'protection-template' --> 'pp-template' | -- 'protection-template' --> 'pp-template' | ||
-- 'protection-template-args' --> {docusage = 'yes'} | -- 'protection-template-args' --> {docusage = 'yes'} | ||
− | local | + | local protectionLevels = env.protectionLevels |
− | |||
− | |||
if not protectionLevels then | if not protectionLevels then | ||
return nil | return nil | ||
412行目: | 436行目: | ||
if editProt then | if editProt then | ||
-- The page is edit-protected. | -- The page is edit-protected. | ||
− | + | return require('Module:Protection banner')._main{ | |
− | + | message('protection-reason-edit'), small = true | |
− | + | } | |
elseif moveProt and moveProt ~= 'autoconfirmed' then | elseif moveProt and moveProt ~= 'autoconfirmed' then | ||
-- The page is move-protected but not edit-protected. Exclude move | -- The page is move-protected but not edit-protected. Exclude move | ||
-- protection with the level "autoconfirmed", as this is equivalent to | -- protection with the level "autoconfirmed", as this is equivalent to | ||
-- no move protection at all. | -- no move protection at all. | ||
− | + | return require('Module:Protection banner')._main{ | |
− | + | action = 'move', small = true | |
+ | } | ||
else | else | ||
return nil | return nil | ||
484行目: | 509行目: | ||
return nil | return nil | ||
end | end | ||
− | if docTitle.isRedirect then | + | if docTitle.isRedirect then |
docTitle = docTitle.redirectTarget | docTitle = docTitle.redirectTarget | ||
end | end | ||
558行目: | 583行目: | ||
-- 'file-namespace-heading' --> 'Summary' | -- 'file-namespace-heading' --> 'Summary' | ||
-- 'other-namespaces-heading' --> 'Documentation' | -- 'other-namespaces-heading' --> 'Documentation' | ||
− | |||
− | |||
-- 'testcases-create-link-display' --> 'create' | -- 'testcases-create-link-display' --> 'create' | ||
--]=] | --]=] | ||
592行目: | 615行目: | ||
if headingStyle then | if headingStyle then | ||
data.headingStyleText = headingStyle | data.headingStyleText = headingStyle | ||
− | |||
− | |||
− | |||
− | |||
else | else | ||
− | data. | + | -- 'documentation-heading' |
+ | data.headingClass = message('main-div-heading-class') | ||
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 | ||
− | + | -- 'mw-editsection-like plainlinks' | |
− | data. | + | data.linksClass = message('start-box-link-classes') |
data.links = links | data.links = links | ||
end | end | ||
615行目: | 635行目: | ||
local sbox = mw.html.create('div') | local sbox = mw.html.create('div') | ||
sbox | sbox | ||
− | + | -- 'documentation-startbox' | |
− | : | + | :addClass(message('start-box-class')) |
− | |||
:newline() | :newline() | ||
:tag('span') | :tag('span') | ||
+ | :addClass(data.headingClass) | ||
:cssText(data.headingStyleText) | :cssText(data.headingStyleText) | ||
− | |||
− | |||
:wikitext(data.heading) | :wikitext(data.heading) | ||
local links = data.links | local links = data.links | ||
679行目: | 697行目: | ||
-- @env - environment table containing title objects, etc., generated with p.getEnvironment | -- @env - environment table containing title objects, etc., generated with p.getEnvironment | ||
-- | -- | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
--]=] | --]=] | ||
710行目: | 722行目: | ||
end | end | ||
− | -- Assemble the | + | -- Assemble the link box. |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
local text = '' | local text = '' | ||
if linkBox then | if linkBox then | ||
727行目: | 732行目: | ||
-- 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 '') | + | text = text .. (p.makeExperimentBlurb(args, env) or '') .. '<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." | ||
742行目: | 746行目: | ||
end | end | ||
end | end | ||
− | + | ||
+ | local box = mw.html.create('div') | ||
+ | -- 'documentation-metadata' | ||
+ | box:addClass(message('end-box-class')) | ||
+ | -- 'plainlinks' | ||
+ | :addClass(message('end-box-plainlinks')) | ||
+ | :wikitext(text) | ||
+ | :done() | ||
− | return | + | return '\n' .. tostring(box) |
end | end | ||
758行目: | 769行目: | ||
-- 'transcluded-from-blurb' --> | -- 'transcluded-from-blurb' --> | ||
-- 'The above [[Wikipedia:Template documentation|documentation]] | -- 'The above [[Wikipedia:Template documentation|documentation]] | ||
− | -- is [[ | + | -- is [[Help: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' | ||
873行目: | 884行目: | ||
local testcasesEditLink = makeUrlLink(testcasesEditUrl, testcasesEditDisplay) | local testcasesEditLink = makeUrlLink(testcasesEditUrl, testcasesEditDisplay) | ||
-- for Modules, add testcases run link if exists | -- for Modules, add testcases run link if exists | ||
− | if testcasesTitle.contentModel == "Scribunto" and testcasesTitle.talkPageTitle and testcasesTitle.talkPageTitle.exists then | + | if testcasesTitle.contentModel == "Scribunto" and testcasesTitle.talkPageTitle and testcasesTitle.talkPageTitle.exists then |
local testcasesRunLinkDisplay = message('testcases-run-link-display') | local testcasesRunLinkDisplay = message('testcases-run-link-display') | ||
local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay) | local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay) |