Module:Alhatorah Explained

-- This module implements Template:Alhatorah. Based on Template:Bibleverselocal p =

--possible book inputs, based on Chicago Manuallocal book_aliases =

--these books only have one chapter, have to be handled differentlylocal no_chapters =

local function trimArg(text) if type(text)

'string' then text = text:match('(%S.-)%s*$') --trimmed text or nil if empty end return textend

local function valueExists(tbl, value) for _, v in pairs(tbl) do if value

v then return true end end return falseend

function p.main(frame) local targs = frame:getParent.args local args = for _, param in ipairs 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+',)

--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, '

Template:Bibleverse with invalid book') end if version_num then table.insert(errors, '') end end return fulllink --.. table.concat(errors)end

return p