Modül:ar-ilgeç

Merhaba, buraya Modül:ar-ilgeç kelimesinin anlamını aramaya geldiniz. DICTIOUS'da Modül:ar-ilgeç kelimesinin tüm sözlük anlamlarını bulmakla kalmayacak, aynı zamanda etimolojisini, özelliklerini ve Modül:ar-ilgeç kelimesinin tekil ve çoğul olarak nasıl söylendiğini de öğreneceksiniz. Modül:ar-ilgeç kelimesi hakkında bilmeniz gereken her şey burada. Modül:ar-ilgeç 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 m_baglantilar = require("Modül:bağlantılar")
local m_strutils = require("Modül:string araçları")
local ar_utilities = require("Modül:ar-araçlar")

local export = {}

local lang = require("Modül:diller").getirKodaGore("ar")

local u = mw.ustring.char

-- hemze varyantları
local HAMZA            = u(0x0621) -- hemze = ء
local HAMZA_ON_ALIF    = u(0x0623)
local HAMZA_ON_W       = u(0x0624)
local HAMZA_UNDER_ALIF = u(0x0625)
local HAMZA_ON_Y       = u(0x0626)
local HAMZA_ANY = ""
local HAMZA_PH = u(0xFFF0) -- hemze

-- harekeler
local A  = u(0x064E) -- fetḥa
local AN = u(0x064B) -- fetḥatān (fetḥa tenvīn)
local U  = u(0x064F) -- ḍamme
local UN = u(0x064C) -- ḍammetān (ḍamme tenvīn)
local I  = u(0x0650) -- kesre
local IN = u(0x064D) -- kesretān (kesre tenvīn)
local SK = u(0x0652) -- sükūn = sakin
local SH = u(0x0651) -- şedde = çift okutur
local DAGGER_ALIF = u(0x0670)
local DIACRITIC_ANY_BUT_SH = ""

-- çeşitli harfler ve semboller
local ALIF   = u(0x0627) -- ʾelif = ا
local AMAQ   = u(0x0649) -- ʾelif-i maḳṣūra = ى
local AMAD   = u(0x0622) -- ʾelif-i medde = آ
local TAM    = u(0x0629) -- tāʾ-i marbūṭa = ة
local T      = u(0x062A) -- tāʾ = ت
local HYPHEN = u(0x0640)
local N      = u(0x0646) -- nūn = ن
local W      = u(0x0648) -- vāv = و
local Y      = u(0x064A) -- yā = ي
local LRM    = u(0x200e) -- soldan sağa doğru işaretle

local function ine(x) -- Eğer Boş Değilse
    if x == "" then
        return nil
    else
        return x
    end
end

function canon_shadda_hamza(word)
	if not word then
		return nil
	end
	-- shadda+short-vowel (including tanwīn vowels, i.e. -an -in -un) gets
	-- replaced with short-vowel+shadda during NFC normalisation, which
	-- MediaWiki does for all Unicode strings; however, it makes various
	-- processes inconvenient, so undo it.
	word = mw.ustring.gsub(word, "(" .. DIACRITIC_ANY_BUT_SH .. ")" .. SH, SH .. "%1")
	-- replace hamza with hamza placeholder; it will be fixed later by hamza_seat()
	word = mw.ustring.gsub(word, HAMZA_ANY .. "()$", HAMZA_PH .. "%1")
	return word
end

-- Supply the appropriate hamza seat(s) for a placeholder hamza.
function hamza_seat(word)
	-- FIXME! Allow multiple possibilities in inflection tables
	if mw.ustring.find(word, HAMZA_PH) then -- optimization to avoid many regexp substs
		return ar_utilities.process_hamza(word)
	end
	return word
end

local forms = {
     = true,
     = true,
     = true,
     = true,
     = true,
     = true,
     = true,
     = true,
     = true,
     = true,
     = true,
     = true,
     = true,
}

local function linkify(args)
    for form in pairs(forms) do
        if args == "-" or not ine(args) then
            args = "—"
        else
        	args = hamza_seat(args)
            args = m_baglantilar.tam_bag({dil = lang, sozcuk = args, c = ine(args) or nil})
        end
    end
end

local attach_1s = {}

attach_1s = function(args)
    if not ine(args) then
    	-- if ends with -y, add -ya; else, truncate final short vowel and add -ī
        if mw.ustring.find(args, "يْ?$") then
            args = mw.ustring.gsub(args, SK .. "?$", SH .. A, 1)
            args = args and (args .. "ya")
            args = args and (mw.ustring.gsub(args, "īya$", "iyya", 1))
        else
            args = mw.ustring.gsub(args, "?$", I .. Y, 1)
            args = args and (mw.ustring.gsub(args, "?$", "ī", 1))
        end
    end
end

attach_1s = function(args)
    if not ine(args) then
    	-- if already ends in -n, double the -n then add -ī; else, add -nī
        if mw.ustring.find(args, "نْ?$") then
            args = mw.ustring.gsub(args, SK .. "?$", SH .. I .. Y, 1)
        else
            args = args .. "نِي"
        end
        args = args and (args .. "nī")
    end
end

local function attach_1p(args)
    if not ine(args) then
    	-- if already ends in -n, double the -n then add -ā; else, add -nā
        if mw.ustring.find(args, "نْ?$") then
            args = mw.ustring.gsub(args, SK .. "?$", SH .. A .. ALIF, 1)
        else
            args = args .. "نَا"
        end
        args = args and (args .. "nā")
    end
end

local function attach_2(args)
    local stem2 = args .. "ك"
    local stem2tr = args and (args .. "k")
    if not ine(args) then
        args = stem2 .. A
        args = args and (stem2tr .. "e")
    end
    if not ine(args) then
        args = stem2 .. I
        args = args and (stem2tr .. "i")
    end
    if not ine(args) then
        args = stem2 .. "ُمَا"
        args = args and (stem2tr .. "ümā")
    end
    if not ine(args) then
        args = stem2 .. "ُمْ"
        args = args and (stem2tr .. "üm")
    end
    if not ine(args) then
        args = stem2 .. "ُنَّ"
        args = args and (stem2tr .. "ünne")
    end
end

local function attach_3(args)
    local stem3 = nil
    local stem3tr = nil
    if mw.ustring.find(args, "" .. SK .. "?$") then
        stem3 = args .. "هِ"
        stem3tr = args and (args .. "hi")
    else
        stem3 = args .. "هُ"
        stem3tr = args and (args .. "hü")
    end
    if not ine(args) then
        args = stem3
        args = args and (stem3tr)
    end
    if not ine(args) then
        args = stem3 .. "مَا"
        args = args and (stem3tr .. "mā")
    end
    if not ine(args) then
        args = stem3 .. "مْ"
        args = args and (stem3tr .. "m")
    end
    if not ine(args) then
        args = stem3 .. "نَّ"
        args = args and (stem3tr .. "nne")
    end
end

local function attach_3fs(args)
    if not ine(args) then
        args = args .. "هَا"
        args = args and (args .. "hā")
    end
end

local function base_to_stem(args)
	-- Sondaki -ā sesini -ey ile değiştirir (e.g. إِلَى şuna dönüşür: إِلَيْهِ)
    args = mw.ustring.gsub(args, "*" .. AMAQ .. DAGGER_ALIF .. "?$", A .. Y .. SK, 1)
    -- Sondaki tāʾ-i marbūṭayı düzgün t ile değiştirir (e.g. حَالَةَ şuna dönüşür: حَالَتَهُ)
    args = mw.ustring.gsub(args, TAM .. "()$", T .. "%1", 1) 
    if not ine(args) then
        if args ~= args then
            args = args and mw.ustring.gsub(args, "ā$", "ay", 1)
        else
            args = args
        end
    end
    args = mw.ustring.gsub(args, "(.)" .. HYPHEN .. "$", "%1", 1)
    args = args and (mw.ustring.gsub(args, "(.)%-$", "%1", 1))
end

local template = [===[
<div class="NavFrame">
<div class="NavHead" align=left>&nbsp; &nbsp; {heading}</div>
<div class="NavContent" style="text-align: center;">
{\op}| style="margin:1em; margin-left: 0; border: 1px solid #AAAAAA; border-collapse:collapse; text-align: center;" cellpadding="4" rules="all"
|-
! style="background:#E2E4C0;" colspan="5" |asıl biçim
|<big>{base}</big>
|-
! style="background:#E2E4C0;" rowspan="2"| kişi adılları-<br />biçimler dâhil
! style="background:#C0CFE4;" colspan="2" | tekil
! style="background:#C0CFE4;" | ikil
! style="background:#C0CFE4;" colspan="2" | çoğul
|-
! style="background:#C0CFE4;" | eril
! style="background:#C0CFE4;" | dişil
! style="background:#C0CFE4;" | genel
! style="background:#C0CFE4;" | eril
! style="background:#C0CFE4;" | dişil
|-
! style="background:#C0CFE4; text-align: right;"| birinci kişi
| colspan="2" | {1s}
|
| colspan="2" | {1p}
|-
! style="background:#C0CFE4; text-align: right;"| ikinci kişi
| {2ms}
| {2fs}
| {2d}
| {2mp}
| {2fp}
|-
! style="background:#C0CFE4; text-align: right;"| üçüncü kişi
| {3ms}
| {3fs}
| {3d}
| {3mp}
| {3fp}
|{\cl}</div></div>]===]

local function make_table(args)
    return m_strutils.format(template, args)
end

function export.inflect(frame)
    local args = frame:getParent().args or {}
    local ni = frame.args
    if args and args ~= "" and args ~= "-" then
        ni = "ni"
    elseif ni ~= "ni" then
        ni = "i"
    end
    PAGENAME = mw.title.getCurrentTitle().text
    SUBPAGENAME = mw.title.getCurrentTitle().subpageText
    NAMESPACE = mw.title.getCurrentTitle().nsText

    args = canon_shadda_hamza(ine(args) or ine(args) or SUBPAGENAME)
    args = ine(args) or ine(args)
    if NAMESPACE == "Template" and not args then
        args = "ـ"
        args = "-"
    end
    args = canon_shadda_hamza(ine(args) or ine(args))
    if not args then
        base_to_stem(args)
    end
    args = ine(args) or ine(args) or args == args and args or nil

    attach_1s(args)
    attach_1p(args)
    attach_2(args)
    attach_3(args)
    attach_3fs(args)

    linkify(args)

    args = ine(args) or "Çekimlemiş biçimler"

    return make_table(args)
end

return export