Modül:araçlar

Merhaba, buraya Modül:araçlar kelimesinin anlamını aramaya geldiniz. DICTIOUS'da Modül:araçlar kelimesinin tüm sözlük anlamlarını bulmakla kalmayacak, aynı zamanda etimolojisini, özelliklerini ve Modül:araçlar kelimesinin tekil ve çoğul olarak nasıl söylendiğini de öğreneceksiniz. Modül:araçlar kelimesi hakkında bilmeniz gereken her şey burada. Modül:araçlar kelimesinin tanımı, konuşurken veya metinlerinizi yazarken daha kesin ve doğru olmanıza yardımcı olacaktır. XXX'in ve diğer kelimelerin tanımını bilmek, kelime dağarcığınızı zenginleştirir ve size daha fazla ve daha iyi dilsel kaynaklar sağlar.
Modül belgelemesi


local export = {}

local data = mw.loadData("Modül:araçlar/veri")
local notneeded = data.notneeded
local neededhassubpage = data.neededhassubpage

-- A helper function to escape magic characters in a string
-- Magic characters: ^$()%.*+-?
function export.pattern_escape(text)
	if type(text) == "table" then
		text = text.args
	end
	text = mw.ustring.gsub(text, "(*+%-?])", "%%%1")
	return text
end

function export.plain_gsub(text, pattern, replacement)
	local invoked = false
	
	if type(text) == "table" then
		invoked = true
		
		if text.args then
			local frame = text
			
			local params = {
				 = {},
				 = {},
				 = { allow_empty = true },
			}
			
			local args = require("Modül:parameters").process(frame.args, params)
			
			text = args
			pattern = args
			replacement = args
		else
			error("If the first argument to plain_gsub is a table, it should be a frame object.")
		end
	else
		if not ( type(pattern) == "string" or type(pattern) == "number" ) then
			error("The second argument to plain_gsub should be a string or a number.")
		end
		
		if not ( type(replacement) == "string" or type(replacement) == "number" ) then
			error("The third argument to plain_gsub should be a string or a number.")
		end
	end
	
	pattern = export.pattern_escape(pattern)
	
	if invoked then
		text = mw.ustring.gsub(text, pattern, replacement)
		return text
	else
		return mw.ustring.gsub(text, pattern, replacement)
	end
end

--[[
Format the categories with the appropriate sort key. CATEGORIES is a list of
categories.
	-- LANG is an object encapsulating a language; if nil, the object for
	   language code 'und' (undetermined) will be used.
	-- SORT_KEY is placed in the category invocation, and indicates how the
	   page will sort in the respective category. Normally this should be nil,
	   and a default sort key based on the subpage name (the part after the
	   colon) will be used.
	-- SORT_BASE lets you override the default sort key used when SORT_KEY is
	   nil. Normally, this should be nil, and a language-specific default sort
	   key is computed from the subpage name (e.g. for Russian this converts
	   Cyrillic ё to a string consisting of Cyrillic е followed by U+10FFFF,
	   so that effectively ё sorts after е instead of the default Wikimedia
	   sort, which (I think) is based on Unicode sort order and puts ё after я,
	   the last letter of the Cyrillic alphabet.
	-- FORCE_OUTPUT forces normal output in all namespaces. Normally, nothing
	   is output if the page isn't in the main, Appendix:, Reconstruction: or
	   Citations: namespaces.
]]
function export.format_categories(categories, lang, sort_key, sort_base, force_output, sc)
	local NAMESPACE = mw.title.getCurrentTitle().nsText
	
	if type(lang) == "table" and not lang.getirKod then
		error("The second argument to format_categories should be a language object.")
	end
	
	if force_output or data.allowedNamespaces then
		local PAGENAME = mw.title.getCurrentTitle().text
		local SUBPAGENAME = mw.title.getCurrentTitle().subpageText
		
		if not lang then
			lang = require("Modül:diller").getirKodaGore("und")
		end
		
		-- Generate a default sort key
		sort_base = lang:yapSiraAnahtari(sort_base or SUBPAGENAME, sc)
		
		if sort_key and sort_key ~= "" then
			-- Gather some statistics regarding sort keys
			if mw.ustring.upper(sort_key) == sort_base then
				--table.insert(categories, "Sort key tracking/redundant")
			end
		else
			sort_key = sort_base
		end
		
		--[[	If the resulting key is the same as the wiki software's
				default, or if the sortkey is empty, remove it			 ]]
		if sort_key == PAGENAME or sort_key == "" then
			sort_key = nil
		end
		
		local out_categories = {}
		for key, cat in ipairs(categories) do
			out_categories = "]"
		end
		
		return table.concat(out_categories, "")
	else
		return ""
	end
end

-- Used by {{categorize}}
function export.template_categorize(frame)
	local NAMESPACE = mw.title.getCurrentTitle().nsText
	local format = frame.args
	local args = frame:getParent().args
	
	local langcode = args; if langcode == "" then langcode = nil end
	local sort_key = args; if sort_key == "" then sort_key = nil end
	local categories = {}
	
	if not langcode then
		if NAMESPACE == "Template" then return "" end
		error("Language code has not been specified. Please pass parameter 1 to the template.")
	end
	
	local lang = require("Modül:diller").getirKodaGore(langcode)
	
	if not lang then
		if NAMESPACE == "Template" then return "" end
		error("The language code \"" .. langcode .. "\" is not valid.")
	end
	
	local prefix = ""
	
	if format == "pos" then
		prefix = lang:getirAsilAd() .. " "
	elseif format == "topic" then
		prefix = lang:getirKod() .. ":"
	end
	
	local i = 2
	local cat = args
	
	while cat do
		if cat ~= "" then
			table.insert(categories, prefix .. cat)
		end
		
		i = i + 1
		cat = args
	end
	
	return export.format_categories(categories, lang, sort_key)
end

function export.catfix(lang, sc)
	if not lang then
		--require("Module:debug").track("catfix/no lang")
		return nil
	elseif type(lang) ~= "table" then
		--require("Module:debug").track("catfix/lang not table")
		return nil
	end
	local canonicalName = lang:getirAsilAd() or error('The first argument to the function "catfix" should be a language object from Module:languages.')
	
	if sc and not sc.getirKod then
		error('The second argument to the function "catfix" should be a script object from Module:scripts.')
	end
	
	-- To add script classes to links on pages created by category boilerplate templates.
	if not sc then
		sc = data.catfix_scripts
		if sc then
			sc = require("Modül:alfabeler").getirKodaGore(sc)
		end
	end
	
	return "<span id=\"catfix\" style=\"display:none;\" class=\"CATFIX-" .. mw.uri.anchorEncode(canonicalName) .. "\">" ..
		require("Modül:alfabe araçları").etiket_yazi("&nbsp;", lang, sc, nil) ..
		"</span>"
end

function export.catfix_template(frame)
	local params = {
		 = {},
		 = { alias_of = "sc" },
		 = {},
	}
	
	local args = require("Modül:parameters").process(frame:getParent().args, params)
	
	local lang = require("Modül:diller").getirKodaGore(args) or require("Modül:diller").err(args, 1)
	
	local sc = args.sc
	if sc then
		sc = require("Modül:alfabeler").getirKodaGore(sc) or error('The script code "' .. sc .. '", provided in the second parameter, is not valid.')
	end
	
	return export.catfix(lang, sc)
end

-- Not exporting because it is not used yet.
local function getDateTense(frame) 
	local name_num_mapping = { = 1,  = 2,  = 3,  = 4,  = 5,  = 6, 
		 = 7,  = 8,  = 9,  = 10,  = 11,  = 12, 
		 = 1,  = 2,  = 3,  = 4,  = 5,  = 6,  = 7,  = 8,  = 9,  = 10,  = 11,  = 12}
	local month = name_num_mapping]
	local date = os.time({year = frame.args, day = frame.args, month = month})
	local today = os.time() -- 12 AM/PM
	local diff = os.difftime(date, today)
	local daylength = 24 * 3600
	
	if diff < -daylength / 2 then return "past"
	else 
		if diff > daylength / 2  then return "future"
		else return "present" end
	end
end

function export.make_id(lang, str)
	--[[	If called with invoke, first argument is a frame object.
			If called by a module, first argument is a language object. ]]
	local invoked = false
	
	if type(lang) == "table" then
		if lang.args then
			invoked = true
			
			local frame = lang
			
			local params = {
				 = {},
				 = {},
			}
			
			local args = require("Modül:parameters").process(frame:getParent().args, params)
			
			local langCode = args
			str = args
			
			local m_languages = require("Modül:diller")
			
			lang = m_languages.getirKodaGore(langCode) or m_languages.err(langCode, 1)
		elseif not lang.getirAsilAd then
			error("The first argument to make_id should be a language object.")
		end
	end

	if not ( type(str) == "string" or type(str) == "number" ) then
		error("The second argument to make_id should be a string or a number.")
	end
	
	local canonicalName = lang:getirAsilAd()
	
	str = mw.uri.encode(str, "WIKI")
	
	local id = canonicalName .. "-" .. str
	
	if invoked then
		return '<li class="senseid" id="' .. id .. '">'
	else
		return id
	end
end

return export