Module:Cite Talmud

local getArgs = require('Module:Arguments').getArgs local yesno = require('Module:yesno')

local function tidyVal(key, val) if type(val) == 'string' then val = val:gsub("&#32;", ' '):match('^%s*(.-)%s*$') if val == '' then return nil else return val end else return val end end

local talmud = {}

talmud.jb_key = {b = "Babylonian", y = "Jerusalem"}

function talmud.generate_citation(frame) local args = getArgs(frame, { wrappers = 'Template:Cite Talmud', valueFunc = tidyVal }) jb      = args[1] or 'b'	if not talmud.jb_key[jb] then return require('Module:Error').error{ 'First argument must be either b for Babylonian Talmud or y for Jerusalem Talmud. (Given "' .. jb .. '")' } end tractate = args[2] daf     = args[4] or args[3] -- These are page or folio numbers as described at Talmud#Slavuta Talmud 1795 and Vilna Talmud 1835. Ranges are accepted, eg. 2b-4a url     = args.url nobook  = yesno(args[5] or args.nobook) if not url then url = "https://www.sefaria.org/" if(jb == 'y') then url = url .. 'Jerusalem_Talmud_' end url = url .. string.gsub(tractate, ' ', '_') .. '.' .. string.gsub(daf or '2a', ' ', '_') end str = '[' .. url .. ' ' .. tractate .. ' ' .. ( daf or '' ) .. ']' 	if not nobook then str = 'Talmud, ' .. jb .. '. ' .. str end return str end

return talmud