「モジュール:Documentation」の版間の差分
		
		
		
		
		
		ナビゲーションに移動
		検索に移動
		
		
	
細
				
コメントを修正
| ja>Ochaochaocha3 細 (1版 をインポートしました) | ja>本日晴天  細 (コメントを修正) | ||
| 33行目: | 33行目: | ||
| 	expectType = expectType or 'string' | 	expectType = expectType or 'string' | ||
| 	if type(msg) ~= expectType then | 	if type(msg) ~= expectType then | ||
| 		error('メッセージ:  | 		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('メッセージ:  | 		return valArray[match] or error('メッセージ: メッセージ設定で$' .. match .. 'キーの値が見つかりませんでした。' .. cfgKey, 4) | ||
| 	end | 	end | ||
| 	return ugsub(msg, '$([1-9][0-9]*)', getMessageVal) | |||
| end | end | ||
| 82行目: | 81行目: | ||
| 		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行目: | 113行目: | ||
| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ||
| --  | -- 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行目: | 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 | ||
| 	--]] | 	--]] | ||
| 	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.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 | ||
| 160行目: | 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 | ||
| 	-- objects and other namespace- or path-related data. | |||
| 	-- @args - table of arguments passed by the user | 	-- @args - table of arguments passed by the user | ||
| 	-- | 	-- | ||
| 275行目: | 283行目: | ||
| 	end | 	end | ||
| 	function envFuncs.protectionLevels() | |||
| 		-- The protection levels table of the title object. | 		-- The protection levels table of the title object. | ||
| 		return env.title.protectionLevels | |||
| 	end | |||
| 	function envFuncs.subjectSpace() | 	function envFuncs.subjectSpace() | ||
| 286行目: | 294行目: | ||
| 	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 | ||
| 314行目: | 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) | ||
| 328行目: | 337行目: | ||
| -- 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) | ||
| 351行目: | 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 | ||
| 381行目: | 403行目: | ||
| 	local testcasesTitle = env.testcasesTitle | 	local testcasesTitle = env.testcasesTitle | ||
| 	if testcasesTitle and testcasesTitle.exists then | 	if testcasesTitle and testcasesTitle.exists then | ||
| 		if testcasesTitle. | 		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') | ||
| 394行目: | 416行目: | ||
| 	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 | ||
| function p.protectionTemplate(env) | |||
| 	-- Generates the padlock icon in the top right. | 	-- Generates the padlock icon in the top right. | ||
| 	-- @env - environment table containing title objects, etc., generated with p.getEnvironment | 	-- @env - environment table containing title objects, etc., generated with p.getEnvironment | ||
| 407行目: | 429行目: | ||
| 	-- 'protection-template' --> 'pp-template' | 	-- 'protection-template' --> 'pp-template' | ||
| 	-- 'protection-template-args' --> {docusage = 'yes'} | 	-- 'protection-template-args' --> {docusage = 'yes'} | ||
| 	local protectionLevels = env.protectionLevels | |||
| 	if not protectionLevels then | |||
| 		return nil | |||
| 	end | |||
| 	local editProt = protectionLevels.edit and protectionLevels.edit[1] | |||
| 	local moveProt = protectionLevels.move and protectionLevels.move[1] | |||
| 	-- 日本語版独自仕様: 編集保護と移動保護で保護レベルが異なる場合に、両方のアイコンを表示する | |||
| 	-- if editProt then | 	local ret = '' | ||
| 	if editProt then | |||
| 		-- The page is edit-protected. | 		-- The page is edit-protected. | ||
| 		ret = ret .. require('Module:Protection banner')._main{ | |||
| 			message('protection-reason-edit'), small = true | |||
| 		} | |||
| 	end | |||
| 		-- The page is move | 	if moveProt and moveProt ~= editProt and moveProt ~= 'autoconfirmed' then | ||
| 		-- The page is move-protected. | |||
| 		ret = ret .. require('Module:Protection banner')._main{ | |||
| 			action = 'move', small = true | |||
| 		} | |||
| 	end | |||
| 	return ret | |||
| end | |||
| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ||
| 450行目: | 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) | ||
| 488行目: | 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 | ||
| 560行目: | 585行目: | ||
| 	-- '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' | ||
| 	--]=] | 	--]=] | ||
| 594行目: | 617行目: | ||
| 	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 | ||
| 617行目: | 637行目: | ||
| 	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 | ||
| 681行目: | 699行目: | ||
| 	-- @env - environment table containing title objects, etc., generated with p.getEnvironment | 	-- @env - environment table containing title objects, etc., generated with p.getEnvironment | ||
| 	--   | 	--   | ||
| 	--]=] | 	--]=] | ||
| 712行目: | 724行目: | ||
| 	end | 	end | ||
| 	-- Assemble the  | 	-- Assemble the link box. | ||
| 	local text = '' | 	local text = '' | ||
| 	if linkBox then | 	if linkBox then | ||
| 729行目: | 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 />' | ||
| 			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." | ||
| 744行目: | 748行目: | ||
| 		end | 		end | ||
| 	end | 	end | ||
| 	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  | 	return '\n' .. tostring(box) | ||
| end | end | ||
| 760行目: | 772行目: | ||
| 	-- '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' | ||
| 875行目: | 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  | 		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) | ||