Modül:utils

Merhaba, buraya Modül:utils kelimesinin anlamını aramaya geldiniz. DICTIOUS'da Modül:utils kelimesinin tüm sözlük anlamlarını bulmakla kalmayacak, aynı zamanda etimolojisini, özelliklerini ve Modül:utils kelimesinin tekil ve çoğul olarak nasıl söylendiğini de öğreneceksiniz. Modül:utils kelimesi hakkında bilmeniz gereken her şey burada. Modül:utils 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


--[=[
  Modül:utils v0.3.1
  Tarih: 2015-08-14

  Bu modül bazı ortak yararlı işlevler içerir.
  Buraya başka bir evrensel işlev eklemek için boş bırakın.
]=]--

local export = {}

-- Tabloyu klonlama işlevi (bazen mw.clone'dan daha iyi çalışır)
function export.clone(original)
    local copy = {}
    for key, value in pairs(original) do
        copy = value
    end
    return copy
end

-- Geçerli PAGENAME ve ilgili bilgileri alma işlevi
function export.get_base()
	local PAGENAME = mw.title.getCurrentTitle().text
	local SUBPAGENAME = mw.title.getCurrentTitle().subpageText
	local NAMESPACE = mw.title.getCurrentTitle().nsText
	
	if NAMESPACE == 'Kullanıcı' or NAMESPACE == 'Участник' then
		return SUBPAGENAME
	end
	return PAGENAME
end

-- Sıralanmış tuşlarla tablo yineleme işlevi (sıralama işlevi farklı olabilir)
function export.spairs(t, order)
    -- anahtarları topla
    local keys = {}
    for k in pairs(t) do keys = k end
    -- sort
    if order then
        table.sort(keys, function(a,b) return order(t, a, b) end)
    else
        table.sort(keys)
    end
    -- yineleyici işlevini döndür
    local i = 0
    return function()
        i = i + 1
        if keys then
            return keys, t]
        end
    end
end

-- Betiklerin çalışma süresini ölçme işlevleri (başlangıç)
function export.start()
	export.started = os.clock()
end

-- Betiklerin çalışma süresini ölçme işlevleri (durdurma)
function export.stop(desc)
	export.stoped = os.clock()
	export.delta = export.stoped - export.started
	if desc == nil then
		desc = 'zaman deltası'
	end
	mw.log('™ ' .. desc .. ' = ' .. export.delta)
end

-- İki dizenin ortak kısmını (uzunluk) bulma işlevi
-- (dizelerin başlangıcından itibaren ortak kısım)
function export.find_common(str_1, str_2)
	if not str_1 or not str_2 then
		return 1
	end
	for pos = 1, #str_1 do
	    local char_1 = str_1:sub(pos, pos)
	    local char_2 = str_2:sub(pos, pos)
	    if char_1 ~= char_2 then
	    	return pos
	    end
	end
	return 1
end

-- Listelerin diktelerinin diktesine kolayca değer eklenmesini sağlayan işlev
-- Bu yapıya örnek:
--   dict = {
--     key1 = {
--       sub_key1 = {değer1, değer2, değer3},
--       sub_key2 = {değer4, değer5},
--     },
--     key2 = {
--       sub_key3 = {değer6},
--       sub_key4 = {değer7, değer8},
--     },
--   }
function export.put_value(dict, key, sub_key, value)
	if not dict then
		dict = {}
	end
	if not dict then
		dict = {}
	end
	table.insert(dict, value)
end

-- Listeleri yinelemeli olarak karşılaştırarak iki öğeyi karşılaştırın.
-- FIXME, liste olmayan tablolarda çalışmaz.
function export.equals(x, y)
    if type(x) == "tablo" and type(y) == "tablo" then
        if #x ~= #y then
            return false
        end 
        for key, value in ipairs(x) do
            if not export.equals(value, y) then
                return false
            end
        end
        return true
    end
    return x == y
end

-- Liste öğeyi içeriyorsa true
function export.contains(tab, item)
    for _, value in pairs(tab) do
        if export.equals(value, item) then
            return true
        end
    end
    return false
end

-- öğe zaten yoksa listeye ekle
function export.insert_if_not(tab, item, pos)
    if not export.contains(tab, item) then
    	if pos then
        	table.insert(tab, pos, item)
        else
        	table.insert(tab, item)
        end
    end
end

-- listeyi kümeye dönüştür
function export.list_to_set(list)
	local set = {}
	for _, item in ipairs(list) do
		set = true
	end
	return set
end

-- Normal İfade sihirli karakterlerini engelle ^$()%.*+-?)
function export.escape(value)
    -- Alfasayısal olmayan her karakterin (%W) % kaçış karakterine ön ekini uygula,
    -- burada %% kaçış ve %1 orijinal karakterdir
    return mw.ustring.gsub(value, "(%W)","%%%1")
end

return export