Module:BibleQuote: Difference between revisions

From BibleVerseWiki
No edit summary
No edit summary
Line 24: Line 24:
     local function renderVerse(verseName, verseNumber)
     local function renderVerse(verseName, verseNumber)
         --local wikiText = mw.title.new(verseName):getContent();
         --local wikiText = mw.title.new(verseName):getContent();
         local titleobject = mw.title.new( verseName )
         local titleobject = mw.title.new(verseName)
         local existspage = titleobject.exists
         local existspage = titleobject.exists
         local pagecontent
         local pagecontent


         if existspage then
         if existspage then
        -- Method uses a colon}
            -- Method uses a colon}
             pagecontent = titleobject:getContent()
             pagecontent = titleobject:getContent()
         else
         else
             pagecontent = "Nope"
             pagecontent = verseName
         end
         end
         -- local verse = expandTemplate(verseName)
         -- local verse = expandTemplate(verseName)

Revision as of 01:22, 12 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, "^<span class=\"pilcrow\">¶</span>%W-", ""))
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 wikiText = mw.title.new(verseName):getContent();
        local titleobject = mw.title.new(verseName)
        local existspage = titleobject.exists
        local pagecontent

        if existspage then
            -- Method uses a colon}
            pagecontent = titleobject:getContent()
        else
            pagecontent = verseName
        end
        -- 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
        return pagecontent
    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