İçeriğe atla

Modül:Siyasi parti

Vikipedi, özgür ansiklopedi
Modül belgelemesi[gör] [değiştir] [geçmiş] [temizle]

{{#invoke:Siyasi parti|fetch|<parti>|<değer>}}

Parametreler

[kaynağı değiştir]

Şablon:Siyasi parti2/belge

Modüle veri eklenmesi

[kaynağı değiştir]

Modülde bulunan siyasi partiler, baş harflerine göre modüle eklenir. Örneğin "Cumhuriyet Halk Partisi", Modül:Siyasi parti/C alt sayfasında bulunur. Adı İngiliz alfabesinde bulunan 26 harf dışındaki harfler, sayılar ve diğer sembollerle başlayan partiler, Modül:Siyasi parti/1 alt sayfasına eklenmelidir.

Veriler iki gruba ayrılır: local alternate ve local full.

Alternatif parti adları

[kaynağı değiştir]

Siyasi partilerin alternatif adlarını belirlemek için kullanılır. Bu veri, partinin kısaltması değildir.

local alternate = {
    ....
	["Parti adı"] = "Partinin alternatif adı",
    ...
}

Tablo verileri

[kaynağı değiştir]
local full = {
    ....
	["Adalet ve Kalkınma Partisi"] = {kisaltma = ", renk = "#ff8700", kisaad= "AK Parti",},
    ...
}

Her parti için üç değer vardır:

  • Partinin kısaltması (kisaltma)
  • Partinin rengi. Renkler hex üçlüsü ya da basit renk adları olarak yazılmalıdır. (renk)
  • Partinin kısa adı (kisaad)

Bu parametrelere eklenen değerlerin, bir tarafın birincil adından farklı olarak, bu modüldeki diğer taraflardan farklı olması gerekmez.

Bir taraf için bir ad değeri eklenmemişse modül girdiyi çevirmeden önce diğer "kısa"ad varyantını çevirmeye çalışacaktır. Bu nedenle, kisaltma varsa ancak kisaad yoksa hangi değer sorulursa sorulsun kisaltma değerini çevirecektir.

Ekleme veya değişiklik talebi

[kaynağı değiştir]

İstekler tartışma sayfasında yeni bir bölümde yapılmalıdır. Aşağıdaki satırı kopyalayın ve yalnızca tarafla ilgili alanları doldurun. En az bir başka bilgi gibi bir parti adı da gereklidir. Her bir değerle ilgili bilgi için yukarıya bakın.

  • ["parti"] = {kisaltma = "", renk = "", kisaad = "",},


Veri tablosu

[kaynağı değiştir]
local p = {}

local default_color = '&#35;F8F9FA'

local categories = {
	party_not_in_list = '[[Kategori:Bilinmeyen siyasi parti adı kullanan sayfalar]]',
	shortname_not_in_list = '[[Kategori:Siyasi parti kısaltması eksik olan sayfalar]]',
	color_not_in_list = '[[Kategori:Siyasi parti rengi eksik olan sayfalar]]',
}

local function create_error(error_message)
	return string.format('<strong class="error">%s</strong>', error_message)
end

local function getFirstLetter(party)
	local index = mw.ustring.sub(party, 1, 1)
	-- Set index for non-A-Z starts
	if string.match(index, '%A') then
		return '1'
	end
	return string.upper(index)
end

local function stripToNil(text)
	-- If text is a string, return its trimmed content, or nil if empty.
	-- Otherwise return text (which may, for example, be nil).
	if type(text) == 'string' then
		text = text:match('(%S.-)%s*$')
		local delink = require('Modül:Bağlantıyı kes')._delink
		text = delink({text, wikilinks = "target"})
	end
	return text
end

-- Example of having all the data - color and names - in one table. Requires one page to be edited instead of two when adding a new party.
function p._fetch(args)
	if not args[1] then
		return create_error("1. parametre parti adı olmalıdır.")
	end

	if not args[2] then
		return create_error("2. parametre bir çıktı tipi olmalıdır.")
	end

 	local party = stripToNil(args[1])
	local out_type = stripToNil(args[2])
	if out_type == 'renk' then
		out_type = 'renk'
	end
	local index = getFirstLetter(party)
	
	-- Load data from submodule
	local data = mw.loadData('Modül:Siyasi parti/' .. index)
	local data_all = data.full

	local party_alt = data.alternate[party]
	local party_info
	if party_alt then
		if data_all[party_alt] then
			party_info = data_all[party_alt]
		else
			index = getFirstLetter(party_alt)
			data = mw.loadData('Modül:Siyasi parti/' .. index)
			party_info = data.full[party_alt]
		end
	else
		party_info = data_all[party]
	end

	-- Check if database value exists
	-- * Not even in database - return given error or input
	-- * No color - return error
	-- * No shortname/abbrev - return first non-blank of abbrev->shortname->input
	if not party_info then
		if out_type == 'renk' then
			return args.error or default_color
		else
			return args.error or party
		end
	end
	local return_value = party_info[out_type]
	if return_value == "" then
		if out_type == 'renk' then
				return args.error or create_error("Değer şablonda bulunmmaktadır. Kendiniz ekleyebilirsiniz ya da başka bir kullanıcıdan eklemesini isteyebilirsiniz.")
		elseif out_type == 'kisaltma' then
			if party_info.kisaad ~= "" then
				return party_info.kisaad
			else
				return party
			end
		elseif out_type == 'kisaad' then
			if party_info.kisaltma ~= "" then
				return party_info.kisaltma 
			else
				return party
			end
		else
			return party
		end
	end

	if out_type == 'renk' and string.find(return_value, '#') then
		return_value = string.gsub(return_value, '#', '&#35;')
	end
	return return_value	
end

function p.fetch(frame)
	-- Initialise and populate variables
	local getArgs = require("Modül:Bağımsız değişkenler").getArgs
	local args = getArgs(frame)
	
	return p._fetch(args)
end

return p