مواد ڏانھن هلو

ماڊيول:homophones

Wiktionary طرفان

local export = {}

-- it is either here, or in Module:ugly hacks, and it is not in ugly hacks. function export.CONTENTMODEL() return mw.title.getCurrentTitle().contentModel end

local skins = { ["common" ] = ""; ["vector" ] = "Vector"; ["monobook" ] = "Monobook"; ["cologneblue"] = "Cologne Blue"; ["modern" ] = "Modern"; }

function export.show(frame)

local output = { '\n

\n' }

local cats = {}

if (not frame.args.hr) or (frame.args.hr == "above") then output[#output + 1] = "----\n" end

local title = ((frame.args['for'] ~= "") and frame.args['for']) and mw.title.new(frame.args['for']) or mw.title.getCurrentTitle() local doc_title = mw.title.new((frame.args['from'] ~= "") and frame.args['from'] or (title.fullText .. '/documentation'))

local pagetype = mw.getContentLanguage():lcfirst(title.nsText) .. " page" local preload

local user_name, skin_name

if title.contentModel == "javascript" then pagetype = "script" preload = 'Template:documentation/preloadTemplate' -- XXX if title.nsText == 'User' then user_name = title.rootText end elseif title.contentModel == "css" then pagetype = "style sheet" preload = 'Template:documentation/preloadTemplate' -- XXX if title.nsText == 'User' then user_name = title.rootText end elseif title.contentModel == "Scribunto" then pagetype = "module" preload = 'Template:documentation/preloadModule' user_name = title.rootText:match("^User:(.+)") elseif title.nsText == "Template" then pagetype = "template" preload = 'Template:documentation/preloadTemplate' elseif title.nsText == "Wiktionary" then pagetype = "project page" preload = 'Template:documentation/preloadTemplate' -- XXX end

local old_title if doc_title.isRedirect then old_title = doc_title doc_title = mw.title.new(string.match(doc_title:getContent(), "^#[Rr][Ee][Dd][Ii][Rr][Ee][Cc][Tt]%s*:?%s*%[%[([^%[%]]-)%]%]")) end

local fallback_docs

output[#output + 1] = "
" if doc_title.exists then output[#output + 1] = "
The following documentation is located at " .. doc_title.fullText .. ". " .. "[[" .. doc_title:fullUrl { action = 'edit' } .. " edit]]
" else if title.contentModel == "Scribunto" then if user_name then fallback_docs = 'documentation/fallback/user module' cats[#cats + 1] = "User sandbox modules" else cats[#cats + 1] = "Uncategorized modules" end if not fallback_docs then cats[#cats + 1] = "Templates and modules needing documentation" end elseif title.nsText == "Template" then cats[#cats + 1] = "Uncategorized templates" if not fallback_docs then cats[#cats + 1] = "Templates and modules needing documentation" end elseif (title.contentModel == "css") or (title.contentModel == "javascript") then if user_name then skin_name = skins[title.text:sub(#title.rootText + 1):match("^/([a-z]+)%.[jc]ss?$")] if skin_name then fallback_docs = 'documentation/fallback/user ' .. title.contentModel end end end output[#output + 1] = "
This " .. pagetype .. " lacks a documentation subpage. " .. (fallback_docs and "You may " or "Please ") .. "[" .. doc_title:fullUrl { action = 'edit', preload = preload } .. " create it].
\n" end if title.fullText:match("^MediaWiki:Gadget%-") then local is_gadget = false local gadget_list = mw.title.new("MediaWiki:Gadgets-definition"):getContent() for line in mw.text.gsplit(gadget_list, "\n") do local gadget, opts, items = line:match("^%*%s*([A-Za-z][A-Za-z0-9_%-]*)%[(.-)%]|(.+)$") if not gadget then gadget, items = line:match("^%*%s*([A-Za-z][A-Za-z0-9_%-]*)|(.+)$") end if gadget then items = mw.text.split(items, "|") for i, item in ipairs(items) do if title.fullText == ("MediaWiki:Gadget-" .. item) then is_gadget = true output[#output + 1] = "
This script is a part of the " output[#output + 1] = gadget output[#output + 1] = " gadget ([" output[#output + 1] = tostring(mw.uri.fullUrl('MediaWiki:Gadgets-definition', 'action=edit')) output[#output + 1] = " edit definitions])
" output[#output + 1] = "
Description ([" output[#output + 1] = tostring(mw.uri.fullUrl('MediaWiki:Gadget-' .. gadget, 'action=edit')) output[#output + 1] = " edit]): " output[#output + 1] = mw.message.new('Gadget-' .. gadget):plain() output[#output + 1] = "
" table.remove(items, i) if #items > 0 then for j, item in ipairs(items) do items[j] = '' .. item .. '' end output[#output + 1] = "
Other parts: " output[#output + 1] = mw.text.listToText(items) output[#output + 1] = "
" end output[#output + 1] = "
"

break end end end end

if not is_gadget then

output[#output + 1] = "
This script is not a part of any [" output[#output + 1] = tostring(mw.uri.fullUrl('Special:Gadgets', 'uselang=en')) output[#output + 1] = ' gadget] ([' output[#output + 1] = tostring(mw.uri.fullUrl('MediaWiki:Gadgets-definition', 'action=edit')) output[#output + 1] = ' edit definitions]).
' end end if old_title then output[#output + 1] = "
Redirected from [" output[#output + 1] = old_title:fullUrl { redirect = 'no' } output[#output + 1] = " " output[#output + 1] = old_title.fullText output[#output + 1] = "] ([" output[#output + 1] = old_title:fullUrl { action = 'edit' } output[#output + 1] = " edit]).
\n" end local links = {} if title.isSubpage then links[#links + 1] = "root page" links[#links + 1] = "root page's subpages" else links[#links + 1] = "subpage list" end if (title.contentModel == "javascript") or (title.contentModel == "css") then links[#links + 1] = "what links here" if user_name then links[#links + 1] = "your own" end else links[#links + 1] = '[' .. tostring(mw.uri.fullUrl('Special:WhatLinksHere/' .. title.fullText, 'hidelinks=1&hideredirs=1')) .. ' transclusions]' if title.contentModel ~= "Scribunto" then links[#links + 1] = '[' .. tostring(mw.uri.fullUrl('Special:WhatLinksHere/' .. title.fullText, 'hidelinks=1&hidetrans=1')) .. ' redirects]' end end if title.contentModel == "Scribunto" then if title.isSubpage and (title.subpageText == "testcases") then links[#links + 1] = "tested module" else links[#links + 1] = "testcases" end if user_name then links[#links + 1] = "user page" links[#links + 1] = "user talk page" links[#links + 1] = "userspace" end end if #links > 0 then output[#output + 1] = "
Useful links: " .. table.concat(links, " • ") .. "
" end output[#output + 1] = "
\n"

if doc_title.exists then output[#output + 1] = frame:expandTemplate { title = doc_title.fullText } elseif fallback_docs then output[#output + 1] = frame:expandTemplate { title = fallback_docs; args = { ['user'] = user_name; ['page'] = title.fullText; ['skin name'] = skin_name; } } end

if frame.args.hr == "below" then

output[#output + 1] = '\n
'

else output[#output + 1] = '\n
' end

for _, cat in ipairs(cats) do output[#output + 1] = "" end

output[#output + 1] = "

\n"

return table.concat(output) end

return export


local export = {}

local m_links = require("Module:links")

function export.show(frame)
	local args = frame:getParent().args
	local lang = args["lang"]; if lang == "" then lang = nil end
	
	if not lang then
		lang = "en"
	end
	
	lang = require("Module:languages").getByCode(lang) or error("The language code \"" .. lang .. "\" is not valid.")
	
	local text = ""
	local terms = {} -- because args is unmodifiable
	
	--make the term empty string if only the alternate text exists
	for name, parameter in pairs(args) do
		local regex = mw.ustring.match(tostring(name),"^alt%d+$")
		
		if regex then
			local index = tonumber((name:gsub("alt", "")))
			
			if not args[index] then
				terms[index] = ""
			end
		end
	end
	
	--copy all unnamed parameters to terms
	for i, param in ipairs(args) do
		terms[i] = param
	end
	
	--main process
	local comma = false
	local count = 0
	
	for i, parameter in ipairs(terms) do
		count = count + 1
		
		if comma then
			text = text .. ", "
		else
			comma = true
		end
		
		local alt = args["alt" .. tostring(i)]
		local tr = args["tr" .. tostring(i)]
		
		if parameter == "" then
			text = text .. alt
		else
			text = text .. m_links.full_link(parameter, alt, lang, nil, nil, nil, {tr = tr}, false)
		end
	end
	
	--return process
	if count > 1 then --add an "s" to "Homophone" if there is more than one term
		return "Homophones: " .. text
	elseif count == 1 then --no "s" if there is only one term
		return "Homophone: " .. text
	end
	
	--if there is no term at all, return default text if namespace is Template
	if mw.title.getCurrentTitle().nsText == "Template" then
		return "Homophone: [[term#English|term]]"
	end
	
	--if this line is parsed, there are no terms at all and the namespace is not Template
	error("Please provide at least one homophone.")
end

return export