Modul:Bibel
Erscheinungsbild
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