(Translated by https://www.hiragana.jp/)
模組:PJBSClass - 维基百科,自由的百科全书 とべ转到内容ないよう

ぐみ:PJBSClass

本页使用了标题或全文手工转换
被永久保护的模块
维基百科ひゃっか自由じゆうてき百科ひゃっかぜん
文档图示 かたぎ块文档[查看] [编辑] [历史] [きよしじょ缓存]

ほんぐみため互助ごじょきゃく提議ていぎ設立せつりつ通用つうようひょうきゅうてきはい套模ぐみためりょう實現じつげんしんてきばん以單どくきゅう條目じょうもくいち總體そうたいてき品質ひんしつひょうきゅう各個かっこWikiProject直接ちょくせつ繼承けいしょう這個quality assessment,也可以搞自己じこてきひょうきゅうちゅうてき繼承けいしょうひょうきゅう項目こうもくいん此設けいりょうよう讀取よみと{{PJBS}}しょ輸入ゆにゅうひょうきゅうてきぐみ

ためりょう避免重複じゅうふく運算うんざん使用しよう使用しようModule:PJBSClass/main讀取よみとひょうきゅうModule:PJBSClass/mainかい透過とうか使用しようmw.loadData("Module:PJBSClass/page")らい調しらべようほんぐみゆずるひょうきゅうてき計算けいさんざいまいぺーじめんただかい計算けいさんいち。也因此,ほんぐみただのう讀取よみとだいいち{{PJBS}}しょ輸入ゆにゅうひょうきゅう,如放置ほうちりょう{{PJBS}}ばんめんてき{{PJBS}}ひょうきゅう內容しょうかいゆるがせりゃく

用法ようほう

建議けんぎ直接ちょくせつ調ちょうようほんぐみおう透過とうかModule:PJBSClass/mainなかてきgetClass函數かんすうらいひょうきゅう值。したぶん僅簡かいほんぐみちゅう函數かんすうてきこうのう

ほんぐみちゅうてき函數かんすう

getAutoClass
ぐみ調ちょうようp.getAutoClass(page_name, input_class)
かたぎいた調ちょうよう{{#invoke:PJBSClass|getAutoClass| page_name | class = input_class }}
自動じどう判斷はんだんぺーじめん名稱めいしょうため「page_name」ぺーじめんてきひょうきゅう。如無ほう判斷はんだんそくかえしかい「input_class」ひょうきゅう值。
如果「page_name」ためむなしある輸入ゆにゅうのり自動じどう判斷はんだんとうぜんぺーじめんてきひょうきゅう
getClassByPage
ぐみ調ちょうようp.getClassByPage(page_name)
かたぎいた調ちょうよう{{#invoke:PJBSClass|getClassByPage| page_name }}
したがえぺーじめん名稱めいしょうため「page_name」ぺーじめんてき討論とうろんぺーじちゅう{{PJBS}}あるせんだいよこはばちゅう讀取よみとひょうきゅう值。
如果「page_name」ためむなしある輸入ゆにゅうそく讀取よみととうぜんぺーじめん對應たいおうてき討論とうろんぺーじ
getWPBSTemplateContent
ぐみ調ちょうようp.getWPBSTemplateContent(wikitext)
かたぎいた調ちょうよう:(支持しじ
したがえ「wikitext」ちゅう擷取{{WikiProject banner shell}}だい碼。
getClassByWikitext
ぐみ調ちょうようp.getClassByWikitext(wikitext, flag)
かたぎいた調ちょうよう{{#invoke:PJBSClass|getClassByWikitext| wikitext }}
したがえ解析かいせきてき維基だい碼「wikitext」ちゅう讀取よみと{{PJBS}}あるせんだいよこはばちゅうてきひょうきゅう值。「flag」ためtrueときかいかえしかい有無うむ找到{{PJBS}}あるせんだいよこはばてきぬのりんきりLua調ちょうよう)。

ほんぐみてきぐみ透過とうか{{Module:PJBSClass/page}}直接ちょくせつ調ちょうよう

  • 用法ようほう{{Module:PJBSClass/page}}かいでんばん所在しょざい條目じょうもく輸入ゆにゅう於{{PJBS}}ちゅうてきひょうきゅう原始げんし值或自動じどう判斷はんだんてきひょうきゅう值。
  • 用法ようほう{{Module:PJBSClass/page|ぺーじめん名稱めいしょう}}かいでん輸入ゆにゅう指定していぺーじめん名稱めいしょう{{PJBS}}ちゅうてきひょうきゅう原始げんし值或自動じどう判斷はんだんてきひょうきゅう值。
    • れい{{Module:PJBSClass/page|ゆたかあまなんじ多面體ためんたい模型もけいれつひょう}}→「れつひょう
  • 用法ようほう{{Module:PJBSClass/page|json=yes}}直接ちょくせつかいでん所在しょざい條目じょうもくmw.loadData("Module:PJBSClass/page")てきJSON結果けっか
    • れい{{Module:PJBSClass/page|json=yes}}→「{"is_ga":false,"is_softredirect":false,"is_disambiguation":false,"is_fm":false,"is_fa":false,"has_WPBS":false,"is_sandbox":false,"is_fl":false,"is_auto":true,"is_sia":false,"class":"かたぎ块"}
      {
      "is_ga":false,
      "is_softredirect":false,
      "is_disambiguation":false,
      "class":"块",
      "is_fa":false,
      "has_WPBS":false,
      "is_sia":false,
      "is_fl":false,
      "is_auto":true,
      "is_fm":false,
      "is_sandbox":false
      }

local p={}
p.titles = {}
local class_normalize = require("Module:Class/convert")._main
local function flagReturn(value, flag, is_lua)
	if is_lua then return {value, flag} end
	return {value}
end
--自動じどう判斷はんだんぺーじめんひょうきゅう
function p.getAutoClass(input_data, class_input)
	local page_name = input_data
	local class_default = class_input or ''
	local is_lua = true
	if type((input_data or {}).args) ~= type(nil) then --input_data is a frame
		page_name = input_data.args['1'] or input_data.args[1]
		class_default = input_data.args.class or input_data.args.CLASS or ''
		is_lua = false
	end
	local class_default_norm = class_normalize({class_default})
	local page = (type(page_name) ~= type(nil)) and ({pcall(mw.title.new, page_name)})[2] or mw.title.getCurrentTitle()
	local page_orig = (page or {}).subjectPageTitle
	if page_orig then --依據いきょ命名めいめい空間くうかん自動じどう判斷はんだんぺーじめん種類しゅるい
		if page_orig.isRedirect then
			if	class_default_norm == "needed" or 
				class_default_norm == "merge"
			then --可能かのう重定しげさだこうぺーじてききゅうべつ
				return unpack(flagReturn(class_default, false, is_lua))
			end
			return unpack(flagReturn('重定しげさだこう', true, is_lua))
		end
		if page_orig:inNamespace(mw.title.new("Template:Ex").namespace) then
			return unpack(flagReturn('ばん', true, is_lua))
		end
		if page_orig:inNamespace(mw.title.new("Module:Ex").namespace) then
			return unpack(flagReturn('かたぎ块', true, is_lua))
		end
		if page_orig:inNamespace(mw.title.new("Category:Ex").namespace) then
			return unpack(flagReturn('ぶん类', true, is_lua))
		end
		if page_orig:inNamespace(mw.title.new("File:Ex").namespace) then
			if	class_default_norm == "fm" or	
				class_default_norm == "book" or	--pdf
				class_default_norm == "audio" or	--wav、ogg...
				class_default_norm == "image"	--png、jpg、gif、svg...
			then --特殊とくしゅぶんけん
				return unpack(flagReturn(class_default, false, is_lua))
			end
			return unpack(flagReturn('ぶんけん', true, is_lua))
		end
		if page_orig:inNamespace(mw.title.new("Draft:Ex").namespace) then
			return unpack(flagReturn('草稿そうこう', true, is_lua))
		end
		if page_orig:inNamespace(mw.title.new("Portal:Ex").namespace) then
			if	class_default_norm == "fpo" or 
				class_default_norm == "complete" or 
				class_default_norm == "substantial" or 
				class_default_norm == "basic" or
				class_default_norm == "stub" 
			then --ゆうひょうきゅうてき主題しゅだいきゅうべつ
				return unpack(flagReturn(class_default, false, is_lua))
			end
			return unpack(flagReturn('しゅ题', true, is_lua))
		end
		if page_orig:inNamespaces(
			mw.title.new("PJ:Ex").namespace,
			mw.title.new("Wikipedia:Ex").namespace)
		then
			return unpack(flagReturn('专题', true, is_lua))
		end
		if page_orig:inNamespace(mw.title.new("User:Ex").namespace) then
			if mw.text.trim(class_default or '') ~= '' then return unpack(flagReturn(class_default, false, is_lua)) end
			return unpack(flagReturn('よう户', true, is_lua))
		end
		if page_orig:inNamespace(mw.title.new("Help:Ex").namespace) then
			if mw.text.trim(class_default or '') ~= '' then return unpack(flagReturn(class_default, false, is_lua)) end
			return unpack(flagReturn('使用しよう说明', true, is_lua))
		end
		if page_orig:inNamespace(mw.title.new("MediaWiki:Ex").namespace) then
			if mw.text.trim(class_default or '') ~= '' then return unpack(flagReturn(class_default, false, is_lua)) end
			return unpack(flagReturn('界面かいめん', true, is_lua))
		end
		if page_orig:inNamespaces(
			mw.title.new("MediaWiki:Ex").namespace,
			mw.title.new("TimedText:Ex").namespace,
			mw.title.new("Media:Ex").namespace,
			mw.title.new("Special:Ex").namespace,
			2600) 
		then
			if mw.text.trim(class_default or '') ~= '' then return unpack(flagReturn(class_default, false, is_lua)) end
			return unpack(flagReturn('条目じょうもく', true, is_lua))
		end
	end
	return unpack(flagReturn(class_default, false, is_lua))
end
--輸入ゆにゅうぺーじめん名稱めいしょうしたがえWPBS讀取よみとひょうきゅう
function p.getClassByPage(input_data, flag)
	local page_name = input_data
	if type((input_data or {}).args) ~= type(nil) then --input_data is a frame
		page_name = input_data.args['1'] or input_data.args[1]
	end
	local page = (type(page_name) ~= type(nil)) and ({pcall(mw.title.new, page_name)})[2] or mw.title.getCurrentTitle()
	local talk_page = (page or {}).talkPageTitle
	if talk_page then --如果討論とうろんぺーじ存在そんざい
		--したがえ討論とうろんぺーじてき維基だい解析かいせきWPBSてきひょうきゅう
		local class_result, has_WPBS = p.getClassByWikitext(talk_page:getContent() or "", flag)
		local has_value = mw.text.trim(class_result or '') ~= ''
		--けん查是いや自動じどうひょうきゅう
		local result, is_auto = p.getAutoClass(talk_page.fullText, class_result)
		if has_value then is_auto = false end
		if flag then --如果したがえLua調ちょうようなみしつらえflagためtrue,かいかえしかい有無うむ找到WPBSてきぬのりん
			return result, has_WPBS, is_auto
		else
			return result
		end
	end
	--找不いたひょうきゅう值也無法むほう自動じどうひょうきゅう
	if flag then --如果したがえLua調ちょうようなみしつらえflagためtrue,かいかえしかい有無うむ找到WPBSてきぬのりん
		return '', false, false
	else
		return ''
	end
end
--處理しょりWPBS重定しげさだこう問題もんだい
local function processWPBSRedirect(input_text)
	local text = input_text
	local norm_name = "WPBS"
	local match_list = { --Template:WikiProject banner shellてき重定しげさだこうひきはいひょう
		--注意ちゅうい:這裡必須ひっす全部ぜんぶ使用しようしょう寫字しゃじはは
		"wiki%s*project%s*banner%s*shell", 
		"w?pj?%s*banner%s*shell", 
		"wiki%s*project%s*banners", 
		"multiple%s*wikiprojects?", 
		"wiki%s*project%s*shell",
		"pjbs",
		"[維维]もと[专專][题題][よこよこ]はば", 
		"?[个]?[維维]?もと?[专專][题題][よこよこ]はば",
		"[維维]もと[专專][题題]", 
		"?[个]?[維维]?もと?[专專][题題]",
		"[专專][题題][よこよこ]はば", 
		"通用つうよう[ひょう评][きゅう级]",
		--如有しんWPBS重定しげさだこう建立こんりゅう加入かにゅう於此
	}--致管理かんりいん:如有しんWPBS重定しげさだこう建立こんりゅう,請優さき受理じゅりWPBS重定しげさだこうひきはい項目こうもくてき編輯へんしゅう請求せいきゅう
	--以小うつし進行しんこうひきはい
	local lotext = mw.ustring.gsub(mw.ustring.lower(text), "_", " ")
	local normtext = text --轉換てんかん重定しげさだこう名稱めいしょうてき過程かてい變數へんすう
	for i = 1,#match_list do --たい所有しょゆうてきWPBS重定しげさだこうひきはいきよしたん項目こうもく做 :
		--維基だい碼中ひろ找是存在そんざい此WPBS重定しげさだこうひきはい
		local j, k = mw.ustring.find(lotext, match_list[i])
		while j ~= nil do --持續じぞく嘗試ひろ找匹はいちょくいた不能ふのうひきはいいたためとめ
			--かえかわため統一とういつてき名稱めいしょう
			normtext = mw.ustring.sub(normtext, 1, j-1)..norm_name..mw.ustring.sub(normtext, k+1, -1) 
			--じゅうしつらえしょううつしひきはいよう變數へんすう
			lotext = mw.ustring.gsub(mw.ustring.lower(normtext), "_", " ")
			j, k = mw.ustring.find(lotext, match_list[i])
		end
	end
	--すべ一的字串改成目標模板名稱WikiProject banner shell。
	--註:如Template:WikiProject banner shell移動いどうあるさらめい,請更新こうしん此處ここら
	--致管理かんりいん:如此しょ需要じゅよう更新こうしん,請優さき受理じゅり更新こうしん此處ここてき編輯へんしゅう請求せいきゅう
	normtext = mw.ustring.gsub(normtext, "[Ww][Pp][Bb][Ss]", "WikiProject banner shell")
	text = normtext --轉換てんかんかんてき文字もじ
	return text
end
--つめかい放置ほうちWPBSてき段落だんらく
local function getTemplateSection(input_text)
	local text = (input_text or '')..'\n'
	--つめ終點しゅうてん1:章節しょうせつ標題ひょうだい
	local i,j = mw.ustring.find(text, "\n%=+[^\n]*%=+%s*\n")
	if i == nil then
		--つめ終點しゅうてん2:DYKひょうせん標題ひょうだい
		i,j = mw.ustring.find(text, "%{%{%s*[Dd][Yy][Kk][Ee]ntry/archive")
	end --つめ終點しゅうてん3:ぺーじ
	--したがえ頭取とうどりいたつめ終點しゅうてん
	text = mw.ustring.sub(text, 1, (i or 0)-1)
	return text
end
--取得しゅとくWPBSばん本身ほんみてきwikitext
function p.getWPBSTemplateContent(input_text)
	local text = input_text
	--ひきはいWPBSばんひらきあたま
	local re_WPBS_header = "%{%{[^%{%}%|]*[Ww]iki[Pp]roject[%s_]*[Bb]anner[%s_]*[Ss]hell"
	--せっらいようなりたいてき{}うつりじょちょくいたWPBSてき也移じょそく停止ていしあるうつりじょいた找不いたなりたいてき{}のり停止ていし
	local it = text
	local old_it = text.."-" --對比たいひ用字ようじくし確定かくていじょうかえかわ有無うむなりたいてき{}
	while it ~= old_it do --如果ゆうなりたいてき{}
		if not mw.ustring.match(it, re_WPBS_header) then break end --如果WPBS也被うつりじょりょうそく停止ていし
		old_it = it --更新こうしん對比たいひくし
		it = mw.ustring.gsub(it, "%{[^%{%}]*%}", "") --うつりじょなりたいてき{}
	end
	--うつりじょいたぼっゆうWPBSぜん一個結果恰好是最後一個有WPBSてき結果けっか
	local WPBS = mw.ustring.match(old_it, re_WPBS_header.."[^%{%}]*%}%}") or ''
	return WPBS
end
--したがえwikitextちゅう解析かいせきWPBSちゅう輸入ゆにゅうてきひょうきゅう。flagためゆうせき "いやようかえしかい有無うむ找到WPBSばん" てきさんすう
function p.getClassByWikitext(input_data, flag)
	local wikitext = input_data
	if type((input_data or {}).args) ~= type(nil) then --input_data is a frame
		wikitext = input_data.args['1'] or input_data.args[1] or ''
	end
	local text=wikitext or ''
	text = getTemplateSection(text) --取得しゅとくかけばんてき段落だんらく
	text = processWPBSRedirect(text) --處理しょりWPBSてき重定しげさだこうぺーじ
	local WPBS = p.getWPBSTemplateContent(text) --讀取よみとWPBSばん內容
	if tostring(mw.title.getCurrentTitle().rootText or ''):lower():gsub("[_%s-]", " ") ~= "wikiproject banner shell" then
		local template_name = mw.ustring.gsub(mw.ustring.match(WPBS, "%{%{%s*([^%}%|]+)%s*[%}%|]") or '','\n', '')
		if mw.ustring.match(template_name, "/sandbox") then
			require('Module:TrackingCategory').append(mw.getCurrentFrame(), "使用しようすな盒評きゅうばんてきぺーじめん")
		end
	end
	--ひきはい | class = XX
	local select_class = mw.ustring.gsub(mw.ustring.match(WPBS, "%|%s*[Cc][Ll][Aa][Ss][Ss]%s*%=%s*([^%|%}]+)") or '', '\n', '')
	--かえしかいひきはいいたてきひょうきゅう
	if flag then --如果需要じゅようかえしかいゆうせき "いやようかえしかい有無うむ找到WPBSばん" 
		return select_class, mw.text.trim(WPBS or '') ~= ''
	else
		return select_class
	end
end

return p