Module:User:Erutuon/he-translit-circumflex/testcases

-- Put tab character between Hebrew and its transliteration. local examples = [=[ בַּיִת	bayiṯ בֵּית	bêṯ בָּתִּים	bāttîm מַחֲנֶה	maḥăneh בָּרָא	bārāʾ רֶגֶל	reḡel כֹּהֵן	kōhēn מֶלֶךְ	meleḵ מַמְלָכָה	mamlāḵâ הַמַּמְלָכָה	hammamlāḵâ הַלְּלוּיָהּ	halləlûyāh הַלְלוּיָהּ	haləlûyāh יָדַע	yāḏaʿ שָׁבוּעַ	šāḇûᵃʿ רוּחַ	rûᵃḥ גָּבֹהַּ	gāḇōᵃh מָשִׁיחַ	māšîᵃḥ רֵיחַ	rêᵃḥ שָׂדֶה	śāḏeh שְׂדֵה	śəḏēh בָּנַי	bānay בְּנֵי	bənê צָרְכִּי	ṣorkî חָכְמָה	ḥāḵəmâ -- Why is this qamats consonant sheva different from all the other qamats consonant shevas in Module:he-translit/testcases? שִׁפְרָה	šip̄râ שָׁכְבְּךָ	šoḵbəḵā הָפְכָּה	hop̄kâ קָטְבּוֹ	qoṭbô נִשְׂרְפָה	niśrəp̄â בָּנָיו	bānāiw -- why i? בָּנֶיהָ	bāneyhā מִצְוֹת	miṣwōṯ זִוּוּג	ziwwûḡ רֹאשׁ	rōʾš רֵאשִׁית	rēʾšîṯ רִאשׁוֹן	riʾšôn מְלָאכָה	məlāʾḵâ מְלֶאכֶת	məleʾḵeṯ חֵטְא	ḥēṭʾ בָּרָאתָ	bārāʾṯā חַטֹּאות	ḥaṭṭōʾwṯ -- or does waw get mater lectionis status through the alef? יְראוּ	yərʾû הָחְלַט	hoḥlaṭ וַיֵּבְךְּ	wayyēḇk אַרְאֶךָּ	ʾarʾekkā וַיַּשְׁקְ	wayyašq אַתְּ	ʾatt וּוָווֹ	ûwāwô וָו	wāw תָּו	tāw קַו	qaw לָאו	lāʾw חַי	ḥay חָי	ḥāy פִּיו	pîw כִּסְלֵו	kislēw גּוֹי	gôy גֹּיִים	gōyîm רָאוּי	rāʾûy קִיא	qîʾ יָבִיאוּ	yāḇîʾû יְבִיאוּן	yəḇîʾûn מֵאוּן	mēʾûn מֵיאוּן	mêʾûn בּוֹאוּ	bôʾû בֹּאוּ	bōʾû בּוּאוּ	bûʾû אָבִיאָה	ʾāḇîʾâ מֵאָה	mēʾâ גֵּיאָהּ	gêʾāh אָבוֹאָה	ʾāḇôʾâ אָבֹאָה	ʾāḇōʾâ נְשׂוּאָה	nəśûʾâ קִיאוֹ	qîʾô גֵּאוֹ	gēʾô גֵּיאוֹ	gêʾô בּוֹאוֹ	bôʾô בֹּאוֹ	bōʾô מִלּוּאוֹ	millûʾô מִי	mî אִיִּים	ʾiyyîm אִיּוֹב	ʾiyyôḇ אִיּוּן	ʾiyyûn אַיִן	ʾayin בּוֹא	bôʾ יְפֵהפֶה	yəp̄ēhp̄eh אֹהֶל	ʾōhel הָאֹהֱלָה	hāʾōhĕlâ אָהֳלוֹ	ʾāhŏlô אָהָלְךָ	ʾoholəḵā -- ??? יִשָּׂשכָר	yiśśāśḵār -- silent sin; what to do with it? הוֹשִׁיעָה נָּא	hôšîʿâ nnāʾ -- initial gemination עַד בֹּאֲךָ	ʿaḏ bōʾăḵā וַיַּשְׁקְ אֶת הַצֹּאן	wayyašq ʾeṯ haṣṣōʾn בְּנֵי בְרָק	bənê ḇərāq בְרָק	ḇərāq אִישׁ יְהוּדִי הָיָה בְּשׁוּשַׁן הַבִּירָה וּשְׁמוֹ מָרְדֳּכַי בֶּן יָאִיר בֶּן־שִׁמְעִי בֶּן־קִישׁ אִישׁ יְמִינִי׃	ʾîš yəhûḏî hāyâ bəšûšan habbîrâ ûšəmô mordŏḵay ben yāʾîr ben-šimʿî ben-qîš ʾîš yəmînî. -- omit cantillation mark stuff -- implicit ktiv/qre that would be nice to have הִוא	hiwʾ יְרוּשָׁלִַם	yərûšālayim יְרוּשָׁלִָם	yərûšālāyim יְרוּשָׁלְַמָה	yərûšālaymâ יְרוּשָׁלְָמָה	yərûšālāymâ -- ktiv male tests חַיָּיב	ḥayyāḇ חַוָּוה	ḥawwâ הֱוֵוה	hĕwēh הַיְינוּ	haynū הִתְכַּוְּונוּ	hiṯkawwənû גַּוְונָא	gawnāʾ מְייוּחָד	məyûḥāḏ כְּדַאי	kəḏaʾy כּוּלָּם	kullām קִידּוּשׁ	qiddûš -- more alef אֲאַזֶּרְךָ	ʾăʾazzerḵā מְאֹד	məʾōḏ וַיִּבְאַשׁ	wayyiḇʾaš וַיֶּאְסֹר	wayyeʾsōr רֻאּוּ	ruʾʾû תָּבִיאּוּ	tāḇîʾʾû וַיָּבִיאּוּ	wayyāḇîʾʾû -- sheva stress tests שָׁתְתָה	šāṯəṯâ שְׁתֵּי	štê שְׁתַּיִם	štayim שְׁתֵּים עֶשְׁרֵי	štêm ʿešrê ]=]

-- Special characters and character combinations: --  â ê î ô û --    ệ       maybe, or ɛ̂? --  ā ē ī ō ū -- ə ă ĕ  ŏ --  ᵃ -- -- ʾ ḇ ḡ ḏ ḥ ṭ ʿ p̄ -- ṣ š ś ṯ

local tests = require('Module:UnitTests')

local he_translit = require('Module:User:Erutuon/he-translit-circumflex')

local full_link = require('Module:links').full_link local lang = require('Module:languages').getByCode('he') local sc = require('Module:scripts').getByCode('Hebr') local function link(term) return full_link{lang = lang, sc = sc, term = term} end

local function parse_examples(example_string) local examples = {} for line in mw.text.gsplit(example_string, "\n") do		local rest, comment = line:match("^(.-)%-%-%s*([^\n]+)%s*$") if not rest then rest = line end rest = mw.text.trim(rest) if rest == "" then table.insert(examples, comment) else local example = mw.text.split(rest, "\t") assert(#example == 2, #example .. "\t" .. mw.text.jsonEncode(rest)) table.insert(example, comment) table.insert(examples, example) end end return examples end

function tests:test_Tiberian self:iterate(		parse_examples(examples),		function(self, Hebrew, translit, comment)			assert(type(Hebrew) == "string", type(Hebrew))			assert(type(translit) == "string", type(translit))			return self:equals(link(Hebrew), mw.ustring.toNFC(he_translit.transliterate(Hebrew)), translit, {comment = comment})		end) end

return tests