Zum Inhalt springen

Modul:Bibel

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 12. Januar 2023 um 01:29 Uhr durch Vollbracht (Diskussion | Beiträge) (AZ: Die Seite wurde neu angelegt: --[=[ Bibel 2023-01-12 Module for various provider bible references Autor: Vollbracht ]=] local transCode = { tcBk = { ['1Kor'] = '1Cor', ['1Kön'] = '1Kgs', ['1Mo'] = 'Gen', ['1Par'] = '1Chr', ['2Kön'] = '2Kgs', ['2Mo'] = 'Exod', ['2Par'] = '2Chr', ['3Mo'] = 'Lev', ['4Mo'] = 'Num', ['5Mo'] = 'Deut', Apg = 'Acts', Deu = 'Deut', Ex = 'Exod', Eze = 'Hes', Ezr = 'Esra…). Sie kann sich erheblich von der aktuellen Version unterscheiden.
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Vorlagenprogrammierung Diskussionen Lua Test Unterseiten
Modul Deutsch English

Modul: Dokumentation

Diese Seite enthält Code in der Programmiersprache Lua. Einbindungszahl Cirrus


--[=[ Bibel 2023-01-12
	Module for various provider bible references
	Autor: Vollbracht
]=]

local transCode = {
	tcBk = {
		['1Kor'] = '1Cor',
		['1Kön'] = '1Kgs',
		['1Mo'] = 'Gen',
		['1Par'] = '1Chr',
		['2Kön'] = '2Kgs',
		['2Mo'] = 'Exod',
		['2Par'] = '2Chr',
		['3Mo'] = 'Lev',
		['4Mo'] = 'Num',
		['5Mo'] = 'Deut',
		Apg = 'Acts',
		Deu = 'Deut',
		Ex = 'Exod',
		Eze = 'Hes',
		Ezr = 'Esra',
		Hoh = 'Hld',
		Ijob = 'Hiob',
		Isa = 'Jes',
		Job = 'Hiob',
		Joh = 'John',
		Jos = 'Josh',
		Kla = 'Klgl',
		Lam = 'Klgl',
		Lk = 'Luke',
		Luk = 'Luke',
		Mat = 'Matt',
		Mt = 'Matt',
		Mk = 'Mark',
		Oba = 'Obd',
		Pr = 'Spr',
		['Röm'] = 'Rom',
		Son = 'Hld',
		Sop = 'Zef',
		Zac = 'Sach',
		Zec = 'Sach',
		Zep = 'Zef'
	},
	tcBkFind = '(%d)%.?%s?(%u%l%l?)',
	tcBHS = {
		['1Chr'] = "1.+Chr",
		['1Kgs'] = "1.+K%C3%B6n",
		['1Sam'] = "1.+Sam",
		['2Chr'] = "2.+Chr",
		['2Kgs'] = "2.+K%C3%B6n",
		['2Sam'] = "2.+Sam"
	},
	tcLut = {
		['1Cor'] = "1.+Cor",
		['1Chr'] = "1.+Chr",
		['1Kgs'] = "1.+K%C3%B6n",
		['1Sam'] = "1.+Sam",
		['2Chr'] = "2.+Chr",
		['2Kgs'] = "2.+K%C3%B6n",
		['2Sam'] = "2.+Sam"
	}
}

local p = {
	TRANSLATION = {
		THOT = "Translators Hebrew Old Testament, 2019",
		THGNT = "Tyndale House Greek New Testament, 2017",
		OHB = "Codex Leningradensis",
		VulgJ = "Vulgata, Hieronimus 405",
		VulgCC = "Vulgata Clementina, ed. Conte 2009",
		ESV = "English Standard Version 2016",
		KJVA = "King James Version 1769",
		GerSch = "Schlachter Bibel 1951",
		GerLut1545 = "Lutherbibel 1545"
	},
	BOOK = {
		de = {
			Gen = "[[Genesis]] (1Mo - 1. Mose)",
			Exod = "[[Exodus]] (2Mo - 2. Mose)",
			Lev = "[[Levitikus]] (3Mo - 3. Mose)",
			Num = "[[Numeri]] (4Mo - 4. Mose)",
			Deut = "[[Deuteronimus]] (5Mo - 5. Mose)",
			Josh = "[[Buch Josua|Josua]]",
			Ri = "[[Buch der Richter|Richter]]",
			Rut = "[[Buch Rut|Rut]]",
			['1Sam'] = "[[1. Buch Samuel|1. Samuel]]",
			['2Sam'] = "[[2. Buch Samuel|2. Samuel]]",
			['1Kgs'] = "[[1. Buch der Könige|1. Könige]]",
			['2Kgs'] = "[[2. Buch der Könige|2. Könige]]",
			['1Chr'] = "[[1. Buch der Chronik|1. Chronik]]",
			['2Chr'] = "[[2. Buch der Chronik|2. Chronik]]",
			Esra = "[[Buch Esra|Esra]]",
			Neh = "[[Buch Nehemia|Nehemia]]",
			Est = "[[Buch Ester|Ester]]",
			Hiob = "[[Ijob]]",
			Ps = "[[Buch der Psalmen|Psalmen]]",
			Spr = "[[Buch der Sprichwörter|Sprichwörter]] (Sprüche Salomos)",
			Pred = "[[Kohelet]] (Prediger Salomo)",
			Hld = "[[Hoheslied]] Salomos (Lied der Lieder)",
			Jes = "[[Jesaja]]",
			Jer = "[[Jeremia]]",
			Klgl = "[[Klagelieder Jeremias|Klagelieder]]",
			Hes = "[[Ezechiel]] (Hesekiel)",
			Dan = "[[Daniel]]",
			Hos = "[[Hosea]]",
			Joel = "[[Joel]]",
			Am = "[[Amos]]",
			Obd = "[[Obadja]]",
			Jona = "[[Jona]]",
			Mi = "[[Micha]]",
			Nah = "[[Nahum]]",
			Hab = "[[Habakuk]]",
			Zef = "[[Zefanja]]",
			Hag = "[[Haggai]]",
			Sach = "[[Sacharja]]",
			Mal = "[[Maleachi]]",
			Matt = "[[Evangelium nach Matthäus|Matthäus]]",
			Mark = "[[Evangelium nach Markus|Markus]]",
			Luke = "[[Evangelium nach Lukas|Lukas]]",
			John = "[[Evangelium nach Johannes|Johannes]]",
			Acts = "[[Apostelgeschichte des Lukas|Apostelgeschichte]]",
			Rom = "[[Brief des Paulus an die Römer|Römer]]",
			['1Cor'] = "[[1. Brief des Paulus an die Korinter|1. Korinter]]",
			['2Cor'] = "[[2. Brief des Paulus an die Korinter|2. Korinter]]",
		},
		GROUP = {
			['1Chr'] = "OT", ['1Cor'] = "NT", ['1Kgs'] = "OT", ['1Sam'] = "OT",
			['2Chr'] = "OT", ['2Kgs'] = "OT",
			['2Sam'] = "OT", Acts = "NT", Am = "OT",
			Dan = "OT", Deut = "OT",
			Esra = "OT",
			Est = "OT",
			Exod = "OT",
			Gen = "OT",
			Hab = "OT",
			Hag = "OT",
			Hes = "OT",
			Hiob = "OT",
			Hld = "OT",
			Hos = "OT",
			Jer = "OT",
			Jes = "OT",
			Joel = "OT",
			Jona = "OT",
			Josh = "OT",
			Klgl = "OT",
			Lev = "OT",
			Luke = "NT",
			Mal = "OT",
			Mark = "NT",
			Matt = "NT",
			Mi = "OT",
			Nah = "OT",
			Neh = "OT",
			Num = "OT",
			Obd = "OT",
			Pred = "OT",
			Ps = "OT",
			Ri = "OT",
			Rut = "OT",
			Sach = "OT",
			Spr = "OT",
			Zef = "OT",
			
		}
	},
	PROVIDER = {
		Q875742 = {
			BHS =	"[https://www.bibelwissenschaft.de/nc/online-bibeln/biblia-"
				..	"hebraica-stuttgartensia-bhs/lesen-im-bibeltext/bibelstelle"
				..	"/%s/anzeige/context/#iv BHS]"
		},
		Q1275774 = {
			bibleserver = "[https://www.bibleserver.com/%s/%s %s]"
		},
		Q7860447 = {
			single =	"https://www.stepbible.org/?q=version=%s|reference=%s",
			multiple =	"https://www.stepbible.org/?q=version=%s|reference=%s&d"
					..	"isplay=INTERLEAVED",
			OT =	"https://www.stepbible.org/?q=version=OHB|version=NASB2020|"
				..	"version=GerSch|reference=%s&display=INTERLEAVED",
			NT =	"https://www.stepbible.org/?q=version=THGNT|version=NASB202"
				..	"0|version=GerSch|reference=%s&display=INTERLEAVED"
		}
	}	
}

local function list(named, th, styles)
	local result = table.concat({'{|', styles}, ' ') .. '\n'
	if th then result = result .. '! colspan="2" ! ' .. th .. '\n|-\n' end
	local r2 = {}
	for k, v in pairs(named) do
		r2 = '|' .. k .. '||' .. v
	end
	return result .. table.concat(r2, '\n|-\n') .. '\n|}'
end

p.translationList = function(frame)
	return frame:preprocess(list(p.TRANSLATIONS), 'Version', frame.args.styles)
end

p.deBookList = function(frame)
	return frame:preprocess(list(p.BOOK.de), 'Buch', frame.args.styles)
end

--[[
	validBk(test)
	validates book given by test string
	parameters:
		test:	a string representation of a book, i. e. name or shortening
	returns listed book shortening or nil
]]
local function validBk(test)
	if p.BOOK.de[test] then return test end
	local result = transCode.tcBk[test]
	if result then return result end
	result = test:sub(1, 3)
	if p.BOOK.de[result] then return result end
	result = transCode.tcBk[result]
	if p.BOOK.de[result] then return result end
	result = test:sub(1, 2)
	if p.BOOK.de[result] then return result end
	result = transCode.tcBk[result]
	if p.BOOK.de[result] then return result end
	result = {test:match(transCode.tcBkFind)}
	if #result < 2 then return nil end
	result = table.concat(result)
	if p.BOOK.de[result] then return result end
	return transCode.tcBk[result]
end

--[[
	URL(book, chapter, start, stop)
	prepares position string part of URL
]]
local function URL(book, version, chapter, verses)
	if not book then return nil end
	local b = book
	local pos = book
	if b then
		-- try to replace book by validated book:
		b = validBk(book)
		if b then
			pos = b
			b = transCode['tc' .. pos]
			if b then b = b[pos] end
			if b then pos = b end
		elseif version == 'BHS' then return nil end
	else
		pos = 'Gen'
	end
	-- special case
	if version == 'BHS' then
		if p.BOOK.GROUP[pos] ~= 'OT' then return nil end
		if chapter then pos = pos .. '%20' .. chapter
		else pos =  pos .. '%201' end
		if verses then pos = pos .. '%2c' .. verses end
		return string.format(p.PROVIDER.Q875742.BHS, pos)
	end
	-- erf case
	if version == 'Lut' then
		if p.BOOK.GROUP[pos] ~= 'OT' then return nil end
		if chapter then pos = pos .. '%20' .. chapter
		else pos =  pos .. '%201' end
		if verses then pos = pos .. '%2c' .. verses end
		return string.format(p.PROVIDER.Q1275774.bibleserver, Lut, pos, Lut)
	end
	-- default case
	if chapter then
		pos = pos .. '.' .. chapter
		if verses then pos = pos .. '.' .. verses end
	else pos = pos .. '.1' end
	local result = p.PROVIDER.Q7860447
	if version then
		if version:find('%,') then
			version = version:gsub('%,%s', '|version=')
			return string.format(result.multiple, version, pos)
		end
		return string.format(result.single, version, pos)
	end
	local grp = p.BOOK.GROUP[book]
	if not grp then return nil end
	result = result[grp]
	if result then return string.format(result, pos) end
	return nil
end

p.validBk = function(frame)
	local book = frame.args.book
	if not book then book = frame.args[1] end
	if not book then
		local args = frame:getParent().args
		book = args.book
		if not book then book = args[1] end
		if not book then return '<span color="red">Kein Buch angegeben.</span>'
							..	'[[Kategorie:Wikipedia:Qualitätssicherung'
							.. ' Vorlageneinbindung fehlerhaft]]'
		end
	end
	local result = validBk(book)
	if not result then
		return '<span color="red">Kein Buch "' .. book
			.. '" im Modul STEP bekannt!</span>[[Kategorie:'
			.. 'Wikipedia:Qualitätssicherung Vorlageneinbindung fehlerhaft]]'
	end
	return p.BOOK.de[result]
end

p.passage = function(frame)
	local args = frame.args
	local book = args.book
	if not book then book = args[1] end
	if not book then
		args = frame:getParent().args
		book = args.book
		if not book then book = args[1] end
		if not book then return '<span color="red">Kein Buch angegeben.</span>'
							..	'[[Kategorie:Wikipedia:Qualitätssicherung'
							.. ' Vorlageneinbindung fehlerhaft]]'
		end
	end
	local chapter = args.chapter
	if args[2] and not chapter then chapter = args[2] end
	local verses = args.verses
	if args[3] and not verses then verses = args[3] end
	local version = args.version
	if args[4] and not version then version = args[4] end
	local smallArgs = { class="noprint" }
	local titleTxt = 'Bibeltext'
	if version and p.TRANSLATION[version] then
		titleTxt = titleTxt .. ': ' .. p.TRANSLATION[version]
	end
	return frame.extensionTag(	'small', URL(book, version, chapter, verses),
								smallArgs)
end

return p