Module:BibleQuote: Difference between revisions
No edit summary |
No edit summary |
||
Line 9: | Line 9: | ||
end | end | ||
local function renderVerses(verseSpec, showPilcrow) | local function compose2(...) | ||
local fnchain = check_functions {...} | |||
local function recurse(i, ...) | |||
if i == #fnchain then return fnchain[i](...) end | |||
return recurse(i + 1, fnchain[i](...)) | |||
end | |||
return function(...) return recurse(1, ...) end | |||
end | |||
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 = {} | ||
local function renderVerse(verseName) | local function renderVerse(verseName, verseNumber) | ||
local verse = expandTemplate(verseName) | local verse = expandTemplate(verseName) | ||
local process = {} | |||
if not showPilcrow then | |||
table.insert(process, removePilcrow) | |||
end | |||
if showVerseNumber then | |||
table.insert(process, addVerseNumber) | |||
end | |||
return "" | |||
end | end | ||
if stopVerse == nil then | if stopVerse == nil then | ||
return renderVerse(verseSpec) | return renderVerse(verseSpec, startVerse) | ||
end | end | ||
for i = startVerse, stopVerse, 1 do | for i = startVerse, stopVerse, 1 do | ||
table.insert(verses, renderVerse(book.." "..chapter..":"..i)) | table.insert(verses, renderVerse(book.." "..chapter..":"..i, startVerse)) | ||
end | end | ||
Line 32: | Line 49: | ||
local function addVerseNumber(verse, number) | local function addVerseNumber(verse, number) | ||
return (string.gsub(verse, "^", "")) | return (string.gsub(verse, "^", "<sup>"..number.."</sup> ")) | ||
end | end | ||
Line 40: | Line 57: | ||
function p.standard(frame) | function p.standard(frame) | ||
return renderVerses(frame.args[1], frame.args.showPilcrow or false) | return renderVerses( | ||
frame.args[1] | |||
, frame.args.showVerseNumber or false | |||
, frame.args.showPilcrow or false | |||
) | |||
end | end | ||
return p | return p |
Revision as of 03:25, 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 compose2(...)
local fnchain = check_functions {...}
local function recurse(i, ...)
if i == #fnchain then return fnchain[i](...) end
return recurse(i + 1, fnchain[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 process = {}
if not showPilcrow then
table.insert(process, removePilcrow)
end
if showVerseNumber then
table.insert(process, addVerseNumber)
end
return ""
end
if stopVerse == nil then
return renderVerse(verseSpec, startVerse)
end
for i = startVerse, stopVerse, 1 do
table.insert(verses, renderVerse(book.." "..chapter..":"..i, startVerse))
end
return table.concat(verses, " ")
end
local function addVerseNumber(verse, number)
return (string.gsub(verse, "^", "<sup>"..number.."</sup> "))
end
local function addChapterNumber(verse, number)
return (string.gsub(verse, "^", ""))
end
function p.standard(frame)
return renderVerses(
frame.args[1]
, frame.args.showVerseNumber or false
, frame.args.showPilcrow or false
)
end
return p