Module:BibleQuote: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
local p = {} --p stands for package | local p = {} --p stands for package | ||
local function removePilcrow(verse) | local function removePilcrow(verse) | ||
return (string.gsub(verse, "¶ | return (string.gsub(verse, "¶.+", "")) | ||
end | end | ||
local function expandTemplate(title, ...) | local function expandTemplate(title, ...) | ||
return mw.getCurrentFrame():expandTemplate{title = title}; | return mw.getCurrentFrame():expandTemplate { title = title }; | ||
end | end | ||
local function compose(...) | local function compose(...) | ||
chain = {...} | local chain = { ... } | ||
local function recurse(i, ...) | local function recurse(i, ...) | ||
if i == #chain then return chain[i](...) end | |||
return recurse(i + 1, chain[i](...)) | |||
end | end | ||
return function(...) return recurse(1, ...) end | return function(...) return recurse(1, ...) end | ||
Line 20: | Line 19: | ||
local function renderVerses(verseSpec, showVerseNumber, showPilcrow) | local function renderVerses(verseSpec, showVerseNumber, showPilcrow) | ||
local _, _, book, chapter, startVerse, stopVerse = | local _, _, book, chapter, startVerse, stopVerse = | ||
string.find(verseSpec, "%s-(.+)%s+(%d+):(%d+)-(%d+)") | string.find(verseSpec, "%s-(.+)%s+(%d+):(%d+)-(%d+)") | ||
local verses = {} | local verses = {} | ||
Line 26: | Line 25: | ||
local verse = expandTemplate(verseName) | local verse = expandTemplate(verseName) | ||
local function addVerseNumber(verse) | local function addVerseNumber(verse) | ||
return (string.gsub(verse, "^", "<sup>"..verseNumber.."</sup>")) | return (string.gsub(verse, "^", "<sup>" .. verseNumber .. "</sup> ")) | ||
end | end | ||
local process = {} | local process = {} | ||
if not showPilcrow then table.insert(process, removePilcrow) end | if not showPilcrow then table.insert(process, removePilcrow) end | ||
if showVerseNumber then table.insert(process, addVerseNumber) end | if showVerseNumber then table.insert(process, addVerseNumber) end | ||
if #process > 0 then return compose(unpack(process))(verse) end | if #process > 0 then return compose(unpack(process))(verse) end | ||
return verse | return verse | ||
end | end | ||
if stopVerse == nil then return renderVerse(verseSpec, startVerse) end | if stopVerse == nil then return renderVerse(verseSpec, startVerse) end | ||
for i = startVerse, stopVerse, 1 do | for i = startVerse, stopVerse, 1 do | ||
table.insert(verses, renderVerse(book.." "..chapter..":"..i, i)) | table.insert(verses, renderVerse(book .. " " .. chapter .. ":" .. i, i)) | ||
end | end | ||
return table.concat(verses, " ") | return table.concat(verses, " ") | ||
end | end | ||
local function addChapterNumber(verse, number) | local function addChapterNumber(verse, number) | ||
Line 47: | Line 44: | ||
end | end | ||
function p.standard(frame) | function p.standard(frame) | ||
local | local stringToBoolean = { ["true"] = true, ["false"] = false } | ||
return renderVerses( | |||
frame.args[1] | |||
, stringToBoolean[frame.args.showVerseNumber] | |||
, stringToBoolean[frame.args.showPilcrow] | |||
) | |||
end | end | ||
return p | return p |
Revision as of 05:56, 9 December 2023
Documentation for this module may be created at Module:BibleQuote/doc
local p = {} --p stands for package
local function removePilcrow(verse)
return (string.gsub(verse, "¶.+", ""))
end
local function expandTemplate(title, ...)
return mw.getCurrentFrame():expandTemplate { title = title };
end
local function compose(...)
local chain = { ... }
local function recurse(i, ...)
if i == #chain then return chain[i](...) end
return recurse(i + 1, chain[i](...))
end
return function(...) return recurse(1, ...) end
end
local function renderVerses(verseSpec, showVerseNumber, showPilcrow)
local _, _, book, chapter, startVerse, stopVerse =
string.find(verseSpec, "%s-(.+)%s+(%d+):(%d+)-(%d+)")
local verses = {}
local function renderVerse(verseName, verseNumber)
local verse = expandTemplate(verseName)
local function addVerseNumber(verse)
return (string.gsub(verse, "^", "<sup>" .. verseNumber .. "</sup> "))
end
local process = {}
if not showPilcrow then table.insert(process, removePilcrow) end
if showVerseNumber then table.insert(process, addVerseNumber) end
if #process > 0 then return compose(unpack(process))(verse) end
return verse
end
if stopVerse == nil then return renderVerse(verseSpec, startVerse) end
for i = startVerse, stopVerse, 1 do
table.insert(verses, renderVerse(book .. " " .. chapter .. ":" .. i, i))
end
return table.concat(verses, " ")
end
local function addChapterNumber(verse, number)
return (string.gsub(verse, "^", ""))
end
function p.standard(frame)
local stringToBoolean = { ["true"] = true, ["false"] = false }
return renderVerses(
frame.args[1]
, stringToBoolean[frame.args.showVerseNumber]
, stringToBoolean[frame.args.showPilcrow]
)
end
return p