Module:BibleQuote: Difference between revisions

From BibleVerseWiki
No edit summary
No edit summary
Line 49: Line 49:
function p.standard(frame)         
function p.standard(frame)         
     local args = getArgs(frame)
     local args = getArgs(frame)
     return renderVerses(  
     return args.showVerseNumber
       args[1]
    --return renderVerses(  
     , args.showVerseNumber
       --args[1]
     , args.showPilcrow
     --, args.showVerseNumber
     )       
     --, args.showPilcrow
     --)       
end
end


return p
return p

Revision as of 05:14, 9 December 2023

Documentation for this module may be created at Module:BibleQuote/doc

local p = {} --p stands for package
local getArgs = require('Module:Arguments').getArgs

local function removePilcrow(verse)    
    return (string.gsub(verse, "¶%W-", ""))
end

local function expandTemplate(title, ...)
    return mw.getCurrentFrame():expandTemplate{title = title};
end

local function compose(...)    
    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 args = getArgs(frame)
    return args.showVerseNumber
    --return renderVerses( 
      --args[1]
    --, args.showVerseNumber
    --, args.showPilcrow
    --)       
end

return p