Module:Cite Talmud: Difference between revisions
Appearance
Content deleted Content added
dited |
Coolreader18 (talk | contribs) Simplify + clarify |
||
Line 1: | Line 1: | ||
local getArgs = require('Module:Arguments').getArgs |
|||
function inspect(str) |
|||
local yesno = require('Module:yesno') |
|||
str = tostring(str) |
|||
local r = '"' |
|||
for i = 1, #str do |
|||
local c = string.byte(str:sub(i,i)) |
|||
if c > 32 and c < 127 then |
|||
r = r .. str:sub(i,i) |
|||
else |
|||
r = r .. '&#' .. c .. ';' |
|||
end |
|||
end |
|||
r = r .. '"' |
|||
return r |
|||
end |
|||
function blanks_to_nil(template_args) |
|||
for key, val in pairs(template_args) do |
|||
if string.find(string.gsub(val, ' ', ''), '^%s*$') then |
|||
template_args[key] = false |
|||
end |
|||
end |
|||
end |
|||
local talmud = {} |
local talmud = {} |
||
Line 27: | Line 7: | ||
function talmud.generate_citation(frame) |
function talmud.generate_citation(frame) |
||
local |
local args = getArgs(frame, { wrappers = 'Template:Cite Talmud' }) |
||
⚫ | |||
-- local invoke_args = frame.args -- parameters from {{#invoke:}} |
|||
blanks_to_nil(template_args) |
|||
⚫ | |||
if not talmud.jb_key[jb] then |
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 |
end |
||
tractate = |
tractate = args[2] |
||
⚫ | |||
chapter = template_args[3] -- Chapter name or number (optional) |
|||
url = args.url |
|||
⚫ | |||
nobook = yesno(args[5] or args.nobook) |
|||
nobook = template_args[5] |
|||
if not url then |
if not url then |
||
url = "https://www.sefaria.org/" |
url = "https://www.sefaria.org/" |
||
Line 44: | Line 21: | ||
url = url .. string.gsub(tractate, ' ', '_') .. '.' .. string.gsub(daf or '2a', ' ', '_') |
url = url .. string.gsub(tractate, ' ', '_') .. '.' .. string.gsub(daf or '2a', ' ', '_') |
||
end |
end |
||
⚫ | |||
-- str is only set if there has not been an error. |
|||
if not nobook then |
|||
⚫ | |||
if nobook == 'yes' then |
|||
⚫ | |||
else |
|||
⚫ | |||
str = str .. url .. ' ' .. tractate .. ' ' .. ( daf or '' ) .. ']' |
|||
end |
|||
end |
end |
||
return |
return str |
||
end |
end |
||
Revision as of 04:32, 5 December 2023
Implements {{Cite Talmud}}
local getArgs = require('Module:Arguments').getArgs
local yesno = require('Module:yesno')
local talmud = {}
talmud.jb_key = {b = "Babylonian", y = "Jerusalem"}
function talmud.generate_citation(frame)
local args = getArgs(frame, { wrappers = 'Template:Cite Talmud' })
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 template_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