Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

Jump to content

Module:Arabic alphabet shapes

From Wikipedia, the free encyclopedia
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