Module:BibleQuote: Difference between revisions

From BibleVerseWiki
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)
   
       
         return showPilcrow and verse.."<br>".."hey" or removePilcrow(verse)   
        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>&nbsp;"))
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>&nbsp;"))
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