Module:Arabic alphabet shapes

local p = {}
local getArgs = require('Module:Arguments').getArgs

local letters = {
	["ا"] = {isolated="ﺍ", final="ﺎ", name="ʾalif"},
	["ب"] = {isolated="ﺏ", final="ﺐ", medial="ﺒ", initial="ﺑ", name="bāʾ"},
	["ت"] = {isolated="ﺕ", final="ﺖ", medial="ﺘ", initial="ﺗ", name="tāʾ"},
	["ث"] = {isolated="ﺙ", final="ﺚ", medial="ﺜ", initial="ﺛ", name="ṯāʾ"},
	["ج"] = {isolated="ﺝ", final="ﺞ", medial="ﺠ", initial="ﺟ", name="ǧīm"},
	["ح"] = {isolated="ﺡ", final="ﺢ", medial="ﺤ", initial="ﺣ", name="ḥāʾ"},
	["خ"] = {isolated="ﺥ", final="ﺦ", medial="ﺨ", initial="ﺧ", name="ḫāʾ"},
	["د"] = {isolated="ﺩ", final="ﺪ", name="dāl"},
	["ذ"] = {isolated="ﺫ", final="ﺬ", name="ḏāl"},
	["ر"] = {isolated="ﺭ", final="ﺮ", name="rāʾ"},
	["ز"] = {isolated="ﺯ", final="ﺰ", name="zayn/zāy"},
	["س"] = {isolated="ﺱ", final="ﺲ", medial="ﺴ", initial="ﺳ", name="sīn"},
	["ش"] = {isolated="ﺵ", final="ﺶ", medial="ﺸ", initial="ﺷ", name="šīn"},
	["ص"] = {isolated="ﺹ", final="ﺺ", medial="ﺼ", initial="ﺻ", name="ṣād"},
	["ض"] = {isolated="ﺽ", final="ﺾ", medial="ﻀ", initial="ﺿ", name="ḍād"},
	["ط"] = {isolated="ﻁ", final="ﻂ", medial="ﻄ", initial="ﻃ", name="ṭāʾ"},
	["ظ"] = {isolated="ﻅ", final="ﻆ", medial="ﻈ", initial="ﻇ", name="ẓāʾ"},
	["ع"] = {isolated="ﻉ", final="ﻊ", medial="ﻌ", initial="ﻋ", name="ʿayn"},
	["غ"] = {isolated="ﻍ", final="ﻎ", medial="ﻐ", initial="ﻏ", name="ġayn"},
	["ف"] = {isolated="ﻑ", final="ﻒ", medial="ﻔ", initial="ﻓ", name="fāʾ"},
	["ق"] = {isolated="ﻕ", final="ﻖ", medial="ﻘ", initial="ﻗ", name="qāf"},
	["ك"] = {isolated="ﻙ", final="ﻚ", medial="ﻜ", initial="ﻛ", name="kāf"},
	["ل"] = {isolated="ﻝ", final="ﻞ", medial="ﻠ", initial="ﻟ", name="lām"},
	["م"] = {isolated="ﻡ", final="ﻢ", medial="ﻤ", initial="ﻣ", name="mīm"},
	["ن"] = {isolated="ﻥ", final="ﻦ", medial="ﻨ", initial="ﻧ", name="nūn"},
	["ه"] = {isolated="ﻩ", final="ﻪ", medial="ﻬ", initial="ﻫ", name="hāʾ"},
	["و"] = {isolated="ﻭ", final="ﻮ", name="wāw"},
	["ي"] = {isolated="ﻱ", final="ﻲ", medial="ﻴ", initial="ﻳ", name="yāʾ"},
	["آ"] = {isolated="ﺁ", final="ﺂ", name="ʾalif maddah"},
	["ة"] = {isolated="ﺓ", final="ﺔ", name="Tāʾ marbūṭah"},
	["ى"] = {isolated="ﻯ", final="ﻰ", name="ʾalif maqṣūrah"},
}

function p.test2(frame)
	local args = getArgs(frame)
	local letter = args[1]
	local pos = string.ulower(args[2])
	
	local positionTable = {
		['isolated'] = letters[letter].isolated,
		['final'] = letters[letter].final,
		['medial'] = letters[letter].medial,
		['initial'] = letters[letter].initial,
	}
	if positionTable[pos] then
		return positionTable[pos]
	end
end

function p.test(frame)
	local args = getArgs(frame)
	local letter = args[1]
	local pos = string.ulower(args[2])
	
	local positionTable = {
		['isolated']= letter,
		['final']	= letter .. 'ـ',
		['medial']	= 'ـ' .. letter .. 'ـ',
		['initial']	= 'ـ' .. letter,
	}
	if positionTable[pos] then
		return positionTable[pos]
	end
end

return p