“モジュール:Documentation” のwerson間の差分

1版 をインポートしました
(回退到由Hamish讨论)做出的修订版本65520093:回退导入版本)
(1版 をインポートしました)
33行目: 33行目:
expectType = expectType or 'string'
expectType = expectType or 'string'
if type(msg) ~= expectType then
if type(msg) ~= expectType then
error('message: type error in message cfg.' .. cfgKey .. ' (' .. expectType .. ' expected, got ' .. type(msg) .. ')', 2)
error('メッセージ: cfg.' .. 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('message: no value found for key $' .. match .. ' in message cfg.' .. cfgKey, 4)
return valArray[match] or error('メッセージ: メッセージ設定で$' .. match .. 'キーの値が見つかりませんでした。' .. cfgKey, 4)
end
end


local ret = ugsub(msg, '$([1-9][0-9]*)', getMessageVal)
return ugsub(msg, '$([1-9][0-9]*)', getMessageVal)
return ret
end
end


82行目: 81行目:
ret[#ret + 1] = select(i, ...)
ret[#ret + 1] = select(i, ...)
end
end
return '<small style="font-style: normal;">(' .. table.concat(ret, ' &#124; ') .. ')</small>'
-- 'documentation-toolbar'
return '<span class="' .. message('toolbar-class') .. '">('
.. table.concat(ret, ' &#124; ') .. ')</span>'
end
end


122行目: 123行目:
end
end
end
end
----------------------------------------------------------------------------
-- Main function
----------------------------------------------------------------------------


p.main = makeInvokeFunc('_main')
p.main = makeInvokeFunc('_main')
133行目: 130行目:
-- 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)
144行目: 137行目:
: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'))
-- 'documentation-container'
:addClass(message('main-div-classes'))
:addClass(message('container'))
:newline()
:newline()
:wikitext(p._startBox(args, env))
:wikitext(p._content(args, env))
:tag('div')
:tag('div')
:css('clear', 'both') -- So right or left floating items don't stick out of the doc box.
-- '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._endBox(args, env))
: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


168行目: 168行目:
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
-- path-related data.
-- 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行目: 294行目:


function envFuncs.docSpace()
function envFuncs.docSpace()
-- The documentation namespace number. For most namespaces this is the same as the
-- The documentation namespace number. For most namespaces this is the
-- subject namespace. However, pages in the Article, File, MediaWiki or Category
-- 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
322行目: 323行目:
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)
336行目: 337行目:
-- Auxiliary templates
-- Auxiliary templates
----------------------------------------------------------------------------
----------------------------------------------------------------------------
p.getModuleWikitext = makeInvokeFunc('_getModuleWikitext')
p.getModuleWikitext = makeInvokeFunc('_getModuleWikitext')


346行目: 348行目:
return moduleWikitext.main()
return moduleWikitext.main()
end
end
return ''
end
end


function p.sandboxNotice(args, env)
function p.sandboxNotice(args, env)
372行目: 372行目:
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
388行目: 389行目:
else
else
pagetype = message('sandbox-notice-pagetype-other')
pagetype = message('sandbox-notice-pagetype-other')
end
local pagetypee
if subjectSpace == 10 then
pagetypee = message('template-pagetype')
elseif subjectSpace == 828 then
pagetypee = message('module-pagetype')
else
pagetypee = message('default-pagetype')--message 'other-pagetype' 不存在
end
end
local templateLink = makeWikilink(templateTitle.prefixedText)
local templateLink = makeWikilink(templateTitle.prefixedText)
410行目: 403行目:
local testcasesTitle = env.testcasesTitle
local testcasesTitle = env.testcasesTitle
if testcasesTitle and testcasesTitle.exists then
if testcasesTitle and testcasesTitle.exists then
if testcasesTitle.namespace == mw.site.namespaces.Module.id then
if testcasesTitle.contentModel == "Scribunto" then
local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display')
local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display')
local testcasesRunLinkDisplay = message('sandbox-notice-testcases-run-link-display')
local testcasesRunLinkDisplay = message('sandbox-notice-testcases-run-link-display')
local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay)
local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay)
local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay)
local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay)
text = text .. '<br /><small>' .. message('sandbox-notice-testcases-run-blurb', {pagetypee, testcasesLink, testcasesRunLink}) .. '</small>'
text = text .. '<br />' .. message('sandbox-notice-testcases-run-blurb', {testcasesLink, testcasesRunLink})
else
else
local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display')
local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display')
local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay)
local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay)
text = text .. '<br /><small>' .. message('sandbox-notice-testcases-blurb', {pagetypee, testcasesLink}) .. '</small>'
text = text .. '<br />' .. message('sandbox-notice-testcases-blurb', {testcasesLink})
end
end
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'))
omargs.text = text
 
local ret = '<div style="clear: both;"></div>'
-- 'documentation-clear'
ret = ret .. messageBox.main('ombox', omargs)
return '<div class="' .. message('clear') .. '"></div>'
return ret
.. require('Module:Message box').main('ombox', omargs)
end
end


436行目: 429行目:
-- 'protection-template' --> 'pp-template'
-- 'protection-template' --> 'pp-template'
-- 'protection-template-args' --> {docusage = 'yes'}
-- 'protection-template-args' --> {docusage = 'yes'}
local protectionLevels, mProtectionBanner
local protectionLevels = env.protectionLevels
local title = env.title
protectionLevels = env.protectionLevels
if not protectionLevels then
if not protectionLevels then
return nil
return nil
444行目: 435行目:
local editProt = protectionLevels.edit and protectionLevels.edit[1]
local editProt = protectionLevels.edit and protectionLevels.edit[1]
local moveProt = protectionLevels.move and protectionLevels.move[1]
local moveProt = protectionLevels.move and protectionLevels.move[1]
-- 日本語版独自仕様: 編集保護と移動保護で保護レベルが異なる場合に、両方のアイコンを表示する
local ret = ''
if editProt then
if editProt then
-- The page is edit-protected.
-- The page is edit-protected.
mProtectionBanner = require('Module:Protection banner')
ret = ret .. require('Module:Protection banner')._main{
local reason = message('protection-reason-edit')
message('protection-reason-edit'), small = true
return mProtectionBanner._main{reason, small = true}
}
elseif moveProt and moveProt ~= 'autoconfirmed' then
end
-- The page is move-protected but not edit-protected. Exclude move
if moveProt and moveProt ~= editProt and moveProt ~= 'autoconfirmed' then
-- protection with the level "autoconfirmed", as this is equivalent to
-- The page is move-protected.
-- no move protection at all.
ret = ret .. require('Module:Protection banner')._main{
mProtectionBanner = require('Module:Protection banner')
action = 'move', small = true
return mProtectionBanner._main{action = 'move', small = true}
}
else
return nil
end
end
return ret
end
end


479行目: 472行目:
local links
local links
local content = args.content
local content = args.content
if not content then
if not content or args[1] 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)
517行目: 510行目:
if not title or not docTitle then
if not title or not docTitle then
return nil
return nil
end
if docTitle.isRedirect then
docTitle = docTitle.redirectTarget
end
end


589行目: 585行目:
-- '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'
--]=]
--]=]
623行目: 617行目:
if headingStyle then
if headingStyle then
data.headingStyleText = headingStyle
data.headingStyleText = headingStyle
elseif subjectSpace == 10 then
-- We are in the template or template talk namespaces.
data.headingFontWeight = 'bold'
data.headingFontSize = '125%'
else
else
data.headingFontSize = '150%'
-- '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
data.linksClass = message('start-box-linkclasses')
-- 'mw-editsection-like plainlinks'
data.linksId = message('start-box-link-id')
data.linksClass = message('start-box-link-classes')
data.links = links
data.links = links
end
end
646行目: 637行目:
local sbox = mw.html.create('div')
local sbox = mw.html.create('div')
sbox
sbox
:css('padding-bottom', '3px')
-- 'documentation-startbox'
:css('border-bottom', '1px solid #aaa')
:addClass(message('start-box-class'))
:css('margin-bottom', '1ex')
:newline()
:newline()
:tag('span')
:tag('span')
:addClass(data.headingClass)
:cssText(data.headingStyleText)
:cssText(data.headingStyleText)
:css('font-weight', data.headingFontWeight)
:css('font-size', data.headingFontSize)
:wikitext(data.heading)
:wikitext(data.heading)
local links = data.links
local links = data.links
710行目: 699行目:
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--  
--  
-- Messages:
-- 'fmbox-id' --> 'documentation-meta-data'
-- 'fmbox-style' --> 'background-color: #ecfcf4'
-- 'fmbox-textstyle' --> 'font-style: italic'
--
-- The HTML is generated by the {{fmbox}} template, courtesy of [[Module:Message box]].
--]=]
--]=]
741行目: 724行目:
end
end


-- Assemble the arguments for {{fmbox}}.
-- Assemble the link box.
local fmargs = {}
fmargs.id = message('fmbox-id') -- Sets 'documentation-meta-data'
fmargs.image = 'none'
fmargs.style = message('fmbox-style') -- Sets 'background-color: #ecfcf4'
fmargs.textstyle = message('fmbox-textstyle') -- 'font-style: italic;'
 
-- Assemble the fmbox text field.
local text = ''
local text = ''
if linkBox then
if linkBox then
758行目: 734行目:
-- 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 />'
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."
766行目: 741行目:
text = text .. (p.makeCategoriesBlurb(args, env) or '')
text = text .. (p.makeCategoriesBlurb(args, env) or '')
end
end
text = text .. (p.makeSubpagesBlurb(args, env) or '') --"Subpages of this template"
text = text .. ' ' .. (p.makeSubpagesBlurb(args, env) or '') --"Subpages of this template"
local printBlurb = p.makePrintBlurb(args, env) -- Two-line blurb about print versions of templates.
local printBlurb = p.makePrintBlurb(args, env) -- Two-line blurb about print versions of templates.
if printBlurb then
if printBlurb then
773行目: 748行目:
end
end
end
end
fmargs.text = text
local box = mw.html.create('div')
box:attr('role', 'note')
-- 'documentation-metadata'
:addClass(message('end-box-class'))
-- 'plainlinks'
:addClass(message('end-box-plainlinks'))
:wikitext(text)
:done()


return messageBox.main('fmbox', fmargs)
return '\n' .. tostring(box)
end
end


789行目: 772行目:
-- 'transcluded-from-blurb' -->  
-- 'transcluded-from-blurb' -->  
-- 'The above [[Wikipedia:Template documentation|documentation]]  
-- 'The above [[Wikipedia:Template documentation|documentation]]  
-- is [[Wikipedia:Transclusion|transcluded]] from $1.'
-- 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'
904行目: 887行目:
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 subjectSpace == 828 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)