Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

Jump to content

Module:Cite Talmud

From Wikipedia, the free encyclopedia

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

local function tidyVal(key, val)
	if type(val) == 'string' then
		val = val:gsub(" ", ' '):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]], <abbr title="' .. talmud.jb_key[jb] .. '">' .. jb .. '.</abbr> ' .. str
	end
	return str
end

return talmud