Module:Alhatorah
-- This module implements Template:Alhatorah. Based on Template:Bibleverse
local p = {}
--possible book inputs, based on Chicago Manual
local book_aliases = {
['Bereshit'] = {'breishit', 'genesis', 'gen', 'gn'},
['Shemot'] = {'exodus', 'exod', 'ex'},
['Vayikra'] = {'leviticus', 'lev', 'lv'},
['Bemidbar'] = {'bamidbar', 'numbers', 'num', 'nm'},
['Devarim'] = {'deuteronomy', 'deut', 'dt'},
['Yehoshua'] = {'joshua', 'josh' , 'jo'},
['Shofetim'] = {'shoftim', 'judges', 'judg', 'jgs'},
['Shemuel I'] = {'shemueli', 'shemuel1', 'shmueli', 'shmuel1', 'shmueli', '1shmuel', 'ishmuel', '1sam', '1sm', 'isamuel'},
['Shemuel II'] = {'shemuelii', 'shemuel2', 'shmuelii', 'shmuel2', 'shmuelii','2shmuel', 'iishmuel', '2sam', '2sm', 'iisamuel'},
['Melakhim I'] = {'melachim1', 'melachimi', 'melakhim1', 'melakhimi', '1kings', 'imelachim', '1kgs','ikings'},
['Melakhim II'] = {'melachim2', 'melachimii', 'melakhim2', 'melakhimii', '2kings', 'iimelachim', '2kgs','iikings'},
['Yeshayahu'] = {'isaiah', 'isa', 'is'},
['Yirmeyahu'] = {'yirmiyahu', 'jeremiah', 'jer'},
['Yechezkel'] = {'ezekiel', 'ezek', 'ez'},
['Hoshea'] = {'hosea', 'hos'},
['Yoel'] = {'joel', 'jl'},
['Amos'] = {'amos', 'am'},
['Ovadyah'] = {'ovadiah', 'obadiah', 'obad', 'ob'},
['Yonah'] = {'jonah', 'jon'},
['Mikhah'] = {'michah', 'micah', 'mic', 'mi'},
['Nachum'] = {'nahum', 'nah', 'na'},
['Chavakkuk'] = {'habakkuk', 'hab', 'hb'},
['Zephanyah'] = {'tzefaniah', 'zephaniah', 'zeph', 'zep'},
['Chaggai'] = {'haggai', 'hag', 'hg'},
['Zekharyah'] = {'zechariah', 'zech', 'zec'},
['Malakhi'] = {'malachi', 'mal'},
['Tehillim'] = {'psalms', 'ps', 'pss', 'psalm'},
['Mishlei'] = {'proverbs', 'prov', 'prv'},
['Kohelet'] = {'ecclesiastes', 'eccles', 'eccl', 'qoheleth'},
['Shir HaShirim'] = {'shirhashirim', 'songofsolomon', 'songofsol', 'songofsongs', 'song', 'sg', 'canticles', 'canticleofcanticles'},
['Eikhah'] = {'lamentations', 'lam'},
['Rut'] = {'ruth', 'ru'},
['Esther'] = {'esther', 'est'},
['Iyyov'] = {'job', 'jb'},
['Daniel'] = {'daniel', 'dan', 'dn'},
['Divrei HaYamim I'] = {'divreihayamimi', 'divreihayamim1', 'ichronicles', '1chronicles', '1chron', '1chr'},
['Divrei HaYamim II'] = {'divreihayamimii', 'divreihayamim2', 'iichronicles', '2chronicles', '2chron', '2chr'},
['Ezra'] = {'ezra', 'ezr'},
['Nechemyah'] = {'nechemiah', 'nehemiah', 'neh'},
}
--these books only have one chapter, have to be handled differently
local no_chapters = {
['obadiah'] = true,
}
local function trimArg(text)
if type(text) == 'string' then
text = text:match('(%S.-)%s*$') --trimmed text or nil if empty
end
return text
end
local function valueExists(tbl, value)
for _, v in pairs(tbl) do
if value == v then
return true
end
end
return false
end
function p.main(frame)
local targs = frame:getParent().args
local args = {}
for _, param in ipairs({1, 2, 3, 4, 5, 'nobook'}) do
args[param] = trimArg(targs[param])
end
local input_book = ''
local ref = ''
local commentary = ''
local text = ''
local mainspace = mw.title.getCurrentTitle():inNamespaces(0)
--analyze arguments
if args[1] == nil or args[2] == nil or tonumber(args[1]) ~= nil then
-- first argument is a numeric prefix and second is book name
input_book = trimArg((args[1] or '') .. ' ' .. (args[2] or '')) or ''
ref = args[3] or ''
commentary = args[4] or ''
text = args[5] or trimArg((input_book .. ' ' .. ref))
else
-- first argument is the whole book name
input_book = args[1] or ''
ref = args[2] or ''
commentary = args[3] or ''
text = args[4] or (input_book .. ' ' .. ref)
end
if args.nobook == 'yes' then
text = ref
end
--analyze book (for URL)
local book = input_book:gsub('%p', ''):gsub(' ', '_')
book_lower = mw.ustring.lower(book)
book_lower = book_lower:gsub('_', '')
local book_found = false
for full_book, aliases in pairs(book_aliases) do
if book_lower == mw.ustring.lower(full_book:gsub(' ', '_')) or valueExists(aliases, book_lower) then
book = full_book:gsub(' ', '_')
book_found = true
break
end
end
--analyze verse
local split_ref = mw.text.split(ref, '[-–—]') --split the ref into the part before and after the dash/hyphen
local s_ref = mw.text.split(split_ref[1], '%p') --any punctuation can be used to separate chapter from verse
local e_ref = split_ref[2] or split_ref[1]
e_ref = mw.text.split(e_ref, '%p')
for i, v in ipairs(s_ref) do s_ref[i] = v:gsub('%D', '') end --remove any non-numeric character (such as f)
for i, v in ipairs(e_ref) do e_ref[i] = v:gsub('%D', '') end
local s_chap, s_vers
local chapter_only = not s_ref[2]
if no_chapters[book] then
chapter_only = false
s_chap = 1
s_vers = s_ref[2] or s_ref[1] or 1 --verse 3 can be specified as "3" or "1:3"
else
s_chap = s_ref[1] or 1
s_vers = s_ref[2] or 1
end
--build URL
commentary = commentary:gsub(' ', '_') --must be outside URL command
local urlpat = 'https://mg.alhatorah.org/Dual/_commentary/_book/_schap._svers#m7e3n7'
local url = urlpat:gsub('_%l+', { --get the components into the url
_commentary = commentary,
_book = book,
_schap = s_chap,
_svers = s_vers,
})
--build text
text = text:gsub('-', '–') --change hyphens to en dashes (3:2-5 → 3:2–5)
text = commentary:gsub('_', ' ') .. ', ' .. text
local fulllink
fulllink = '[' .. url .. ' ' .. text .. ']'
if mainspace then
if not book_found then
table.insert(errors, '<span style="color:red">Template:Bibleverse with invalid book</span>[[Category:Pages with Bible book errors]]')
end
if version_num then
table.insert(errors, '[[Category:Pages with numeric Bible version references]]')
end
end
return fulllink --.. table.concat(errors)
end
return p
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.