Module:User:Erutuon/hbo-translit/testcases

-- From Module:User:Sartma/hbo-translit/testcases local examples = [[ בַּיִת	bayiṯ בֵּית	bēṯ בָּתִּים	bɔttīm מַחֲנֶה	maḥănɛ̂ בָּרָא	bɔrɔʾ רֶ֫גֶל	rɛ́ḡɛl רֶגֶל	rɛ́ḡɛl כֹּהֵן	kohen מֶ֫לֶךְ	mɛ́lɛḵ מַמְלָכָה	mamlɔḵɔ̂ הַמַּמְלָכָה	hammamlɔḵɔ̂ הַלְּלוּיָהּ	halləlūyɔh הַֽלְלוּיָהּ	haləlūyɔh יָדַע	yɔḏaʿ שָׁבוּעַ	šɔḇū́aʿ רוּחַ	rū́aḥ גָּבֹהַּ	gɔḇóah גָּבֹ֫הַּ	gɔḇóah מָשִׁיחַ	mɔšī́aḥ מָשִׁ֫יחַ	mɔšī́aḥ רֵיחַ	rḗaḥ שָׂדֶה	śɔḏɛ̂ שְׂדֵה	śəḏê בָּנַי	bɔnay בְּנֵי	bənē צָרְכִּי	ṣɔrkī שִׁפְרָה	šip̄rɔ̂ חָכְמָה	ḥɔḵmɔ̂ קָרָא	qɔrɔʾ קָֽרְאָה	qɔrəʾɔ̂ שָׁכְבְּךָ	šɔḵbəḵɔ הָפְכָּה	hɔp̄kɔ̂ -- made-up word, but a particular potentially problematic Unicode situation קָטְבּוֹ	qɔṭbō -- another particular potentially problematic Unicode situation נִשְׂרְפָה	niśrəp̄ɔ̂ בָּנָיו	bɔnɔ̄w -- not sure about this one, further checks needed בָּנֶיהָ	bɔnɛ̄hɔ מִצְוֹת	miṣwoṯ זִוּוּג	ziwwūḡ רֹאשׁ	roʾš רֵאשִׁית	reʾšīṯ רִאשׁוֹן	riʾšōn מְלָאכָה	məlɔʾḵɔ̂ מְלֶאכֶת	məlɛʾḵɛṯ חֵטְא	ḥeṭʾ בָּרָאתָ	bɔrɔʾṯɔ חַטֹּאות	ḥaṭṭoʾwṯ -- https://biblehub.com/hebrew/chattot_2403.htm יְראוּ	yərʾū -- masculine plural imperative of יָרֵא, to check וַיֶּאְסֹר	wayyɛʾsor הָחְלַט	hɔḥlaṭ וַיֵּבְךְּ	wayyeḇk -- not sure about this one, further checks needed אַרְאֶךָּ	ʾarʾɛkkɔ וַיַּשְׁקְ	wayyašq -- not sure about this one, further checks needed אַתְּ	ʾatt וּוָווֹ	ūwɔwō וָו	wɔw תָּו	tɔw קַו	qaw לָאו	lɔʾw חַי	ḥay חָי	ḥɔ̄ -- pausal פִּיו	pīw כִּסְלֵו	kislew גּוֹי	gōy גֹּי	goy גֹּיִים	goyīm רָאוּי	rɔʾūy קִיא	qīʾ יָבִיאוּ	yɔḇīʾū יְבִיאוּן	yəḇīʾūn מֵאוּן	meʾūn מֵיאוּן	mēʾūn בּוֹאוּ	bōʾū בֹּאוּ	boʾū בּוּאוּ	būʾū -- made-up word, but may help identify the issue אָבִיאָה	ʾɔḇīʾɔ̂ מֵאָה	meʾɔ̂ גֵּיאָהּ	gēʾɔh אָבוֹאָה	ʾɔḇōʾɔ̂ אָבֹאָה	ʾɔḇoʾɔ̂ נְשׂוּאָה	nəśūʾɔ̂ קִיאוֹ	qīʾō גֵּאוֹ	geʾō גֵּיאוֹ	gēʾō בּוֹאוֹ	bōʾō בֹּאוֹ	boʾō מִלּוּאוֹ	millūʾō מִי	mī אִיִּים	ʾiyyīm אִיּוֹב	ʾiyyōḇ אִיּוּן	ʾiyyūn אַ֫יִן	ʾáyin בּוֹא	bōʾ יְפֵהפֶה	yəp̄êp̄ɛ̂ אֹ֫הֶל	ʾóhɛl הָאֹהֱלָה	hɔʾohɛ̆lɔ̂ אָהֳלוֹ	ʾɔhɔ̆lō אָהָלְךָ	ʾɔhɔləḵɔ -- not sure about this one, further checks needed https://biblehub.com/hebrew/veahalcha_168.htm יִשָּׂשכָר	yiśśɔḵɔr -- Still undecided if this actually needs to be handled הוֹשִׁיעָה נָּא	hōšīʿɔ̂ nnɔʾ עַד בֹּאֲךָ	ʿaḏ boʾăḵɔ וַיַּשְׁקְ אֶת הַצֹּאן	wayyašq ʾɛṯ haṣṣoʾn -- not sure about this one, further checks needed בְּנֵי בְרָק	bənē ḇərɔq בְרָק	ḇərɔq אִישׁ יְהוּדִי הָיָה בְּשׁוּשַׁן הַבִּירָה וּ&zwnj;שְׁמוֹ מָרְדֳּכַי בֶּן יָאִיר בֶּן־שִׁמְעִי בֶּן־קִישׁ אִישׁ יְמִינִי׃	ʾīš yəhūḏī hɔyɔ̂ bəšūšan habbīrɔ̂ ūšəmō mɔrdɔ̆ḵay bɛn yɔʾīr bɛn-šimʿī bɛn-qīš ʾīš yəmīnī. אִישׁ יְהוּדִי הָיָה בְּשׁוּשַׁן הַבִּירָה וּשְׁמוֹ מָרְדֳּכַי בֶּן יָאִיר בֶּן־שִׁמְעִי בֶּן־קִישׁ אִישׁ יְמִינִי׃	ʾīš yəhūḏī hɔyɔ̂ bəšūšan habbīrɔ̂ ūšəmō mɔrdɔ̆ḵay bɛn yɔʾīr bɛn-šimʿī bɛn-qīš ʾīš yəmīnī. אִ֣ישׁ יְהוּדִ֔י הָיָ֖ה בְּשׁוּשַׁ֣ן הַבִּירָ֑ה וּשְׁמ֣וֹ מָרְדֳּכַ֗י בֶּ֣ן יָאִ֧יר בֶּן־שִׁמְעִ֛י בֶּן־קִ֖ישׁ אִ֥ישׁ יְמִינִֽי׃	ʾīš yəhūḏī hɔyɔ̂ bəšūšan habbīrɔ̂ ūšəmō mɔrdɔ̆ḵay bɛn yɔʾīr bɛn-šimʿī bɛn-qīš ʾīš yəmīnī. -- fully accented verse; stress should not be indicated in the final syllable וַיְהִי הַמַּבּוּל אַרְבָּעִים יוֹם עַל־הָאָרֶץ וַיִּרְבּוּ הַמַּיִם וַיִּשְׂאוּ אֶת־הַתֵּבָה וַתָּרָם מֵעַל הָאָרֶץ׃	wayəhī hammabbūl ʾarbāʿīm yōm ʿal-hāʾā́reṣ wayyirbū hammáyim wayyiśəʾū ʾeṯ-hattēḇā wattā́rom mēʿal hāʾāreṣ. -- a reminder of why this is hard וַיְהִ֧י הַמַּבּ֛וּל אַרְבָּעִ֥ים י֖וֹם עַל־הָאָ֑רֶץ וַיִּרְבּ֣וּ הַמַּ֗יִם וַיִּשְׂאוּ֙ אֶת־הַתֵּבָ֔ה וַתָּ֖רָם מֵעַ֥ל הָאָֽרֶץ׃	wayəhī hammabbūl ʾarbāʿīm yōm ʿal-hāʾā́reṣ wayyirbū hammáyim wayyiśəʾū ʾeṯ-hattēḇā wattā́rom mēʿal hāʾāreṣ. -- fully accented verse version of the above -- Category:Biblical Hebrew אִבְחָה	ʾiḇḥɔ̂ אָבִיב	ʾɔḇīḇ אֲבִיּוֹנָה	ʾăḇiyyōnɔ̂ אַבִּיר	ʾabbīr אֶ֫בֶן	ʾɛ́ḇɛn אָהָל	ʾɔhɔl אֵטוּן	ʾeṭūn אִי	ʾī אֵי	ʾē אִלֵּף	ʾillep̄ אָכְלָה	ʾɔḵlɔ̂ -- food אָֽכְלָה	ʾɔḵəlɔ̂ -- she ate אַלּוּף	ʾallūp̄ אֻלַי	ʾulay אַף	ʾap̄ אַרְגְּוָן	ʾargəwɔn אַרְגָּז	ʾargɔz אִשָּׁה	ʾiššɔ̂ אִשֶּׁה	ʾiššɛ̂ אַשְׁרֵי	ʾašrē אֵת, אֶת־	ʾeṯ, ʾɛṯ- אֹת	ʾoṯ אַסְטְרוֹנוֹם	ʾasṭərōnōm אֶפִּיסְטֵמוֹלוֹגְיָה	ʾɛppīsṭemōlōgyɔ̂ ]]

local tests = require('Module:UnitTests')

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

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}:gsub("&lrm;", "") 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

local function add_qamats_qatan_comments(examples) local qamats_qatan = mw.ustring.char(0x05C7) for _, example in ipairs(examples) do		if type(example) == "table" and example[1]:find(qamats_qatan, 1, true) then example[3] = (example[3] and example[3] .. "; " or "") .. "with qamats qatan code point" end end return examples end

function tests:test_translit self:iterate(		add_qamats_qatan_comments(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