Bahaipedia
Bahaipediaدانشنامه بهائی
Menú
Cambios recientes
Haga su pregunta
Página al azar
Categorías
Ayuda en Wikipedia
En otros proyectos
Herramientas
Lo que enlaza aquí
Cambios relacionados
Subir archivo
Páginas especiales
Versión para imprimir
Enlace permanente
Información de la página
Módulo
Discusión
Ver historial
No has accedido
Discusión
Contribuciones
Crear una cuenta
Acceder
Navigation
Navigation
Navegación
Navigation
ナビゲーション
Điều hướng
导航
Navegação
ناوبری
Навигация
Cambios recientes
Haga su pregunta
Página al azar
Categorías
Ayuda en Wikipedia
En otros proyectos
Learn more
Weitere Informationen
Aprender más
En savoir plus
詳しく読む
Tìm hiểu thêm
了解更多
Saiba mais
یاد بگیرید بیشتر
Узнать больше
Fe bahá’í
Bahá’u’lláh
‘Abdu’l-Bahá
Principios bahá’ís
Tools
Werkzeuge
Herramientas
Outils
ツール
Công cụ
工具
Ferramentas
ابزارها
Инструменты
Lo que enlaza aquí
Cambios relacionados
Subir archivo
Páginas especiales
Versión para imprimir
Enlace permanente
Información de la página
Translations
Übersetzungen
Traducciones
Traductions
各言語版
Bản dịch
翻译
Traduções
به زبان‌های دیگر
Переводы

Módulo:WorldOrder

De Bahaipedia
Saltar a:navegación, buscar

La documentación para este módulo puede ser creada en Módulo:WorldOrder/doc

local module = {}

-- Combined data structure
local combined_map = {
    ["0101"] = {
        pdfOffset = "2",
        publicationDate = "April, 1935",
        itemNumber = "Q14"
    },
    ["0102"] = {
        pdfOffset = "-38",
        publicationDate = "May, 1935",
        itemNumber = "Q33"
    },
    ["0103"] = {
        pdfOffset = "-78",
        publicationDate = "June, 1935",
        itemNumber = "Q56"
    },
    ["0104"] = {
        pdfOffset = "-118",
        publicationDate = "July, 1935",
        itemNumber = "Q79"
    },
    ["0105"] = {
        pdfOffset = "-158",
        publicationDate = "August, 1935",
        itemNumber = "Q96"
    },
    ["0106"] = {
        pdfOffset = "-198",
        publicationDate = "September, 1935",
        itemNumber = "Q112" 
    },
    ["0107"] = {
        pdfOffset = "-238",
        publicationDate = "October, 1935",
        itemNumber = "" 
    },
    ["0108"] = {
        pdfOffset = "-278",
        publicationDate = "November, 1935",
        itemNumber = "" 
    },
    ["0109"] = {
        pdfOffset = "-318",
        publicationDate = "December, 1935",
        itemNumber = "" 
    },
    ["0110"] = {
        pdfOffset = "-358",
        publicationDate = "January, 1936",
        itemNumber = "" 
    },
    ["0111"] = {
        pdfOffset = "-398",
        publicationDate = "February, 1936",
        itemNumber = "" 
    },
    ["0112"] = {
        pdfOffset = "-442",
        publicationDate = "March, 1936",
        itemNumber = "" 
    },
    ["0201"] = {
        pdfOffset = "2",
        publicationDate = "April, 1936",
        itemNumber = "Q216"
    },
    ["0202"] = {
        pdfOffset = "-40",
        publicationDate = "May, 1936",
        itemNumber = "Q217"
    },
    ["0203"] = {
        pdfOffset = "-80",
        publicationDate = "June, 1936",
        itemNumber = "Q218"
    },
    ["0204"] = {
        pdfOffset = "-120",
        publicationDate = "July, 1936",
        itemNumber = "Q219"
    },
    ["0205"] = {
        pdfOffset = "-160",
        publicationDate = "August, 1936",
        itemNumber = "Q220"
    },
    ["0206"] = {
        pdfOffset = "-200",
        publicationDate = "September, 1936",
        itemNumber = "Q221"
    },
    ["0207"] = {
        pdfOffset = "-240",
        publicationDate = "October, 1936",
        itemNumber = "Q222"
    },
    ["0208"] = {
        pdfOffset = "-280",
        publicationDate = "November, 1936",
        itemNumber = "Q223"
    },
    ["0209"] = {
        pdfOffset = "-320",
        publicationDate = "December, 1936",
        itemNumber = "Q224"
    },
    ["0210"] = {
        pdfOffset = "-360",
        publicationDate = "January, 1937",
        itemNumber = "Q225"
    },
    ["0211"] = {
        pdfOffset = "-400",
        publicationDate = "February, 1937",
        itemNumber = "Q226"
    },
    ["0212"] = {
        pdfOffset = "-440",
        publicationDate = "March, 1937",
        itemNumber = "Q227"
    },
    ["0301"] = {
        pdfOffset = "2",
        publicationDate = "April, 1937",
        itemNumber = "Q229"
    },
    ["0302"] = {
        pdfOffset = "-38",
        publicationDate = "May, 1937",
        itemNumber = "Q230"
    },
    ["0303"] = {
        pdfOffset = "-78",
        publicationDate = "June, 1937",
        itemNumber = "Q231"
    },
    ["0304"] = {
        pdfOffset = "-118",
        publicationDate = "July, 1937",
        itemNumber = "Q232"
    },
    ["0305"] = {
        pdfOffset = "-158",
        publicationDate = "August, 1937",
        itemNumber = "Q233"
    },
    ["0306"] = {
        pdfOffset = "-198",
        publicationDate = "September, 1937",
        itemNumber = "Q234"
    },
    ["0307"] = {
        pdfOffset = "-238",
        publicationDate = "October, 1937",
        itemNumber = "Q235"
    },
    ["0308"] = {
        pdfOffset = "-278",
        publicationDate = "November, 1937",
        itemNumber = "Q236"
    },
    ["0309"] = {
        pdfOffset = "-318",
        publicationDate = "December, 1937",
        itemNumber = "Q237"
    },
    ["0310"] = {
        pdfOffset = "-358",
        publicationDate = "January, 1938",
        itemNumber = "Q238"
    },
    ["0311"] = {
        pdfOffset = "-398",
        publicationDate = "February, 1938",
        itemNumber = "Q239"
    },
    ["0312"] = {
        pdfOffset = "-438",
        publicationDate = "March, 1938",
        itemNumber = "Q240"
    },
    ["0401"] = {
        pdfOffset = "2",
        publicationDate = "April, 1938",
        itemNumber = "Q242"
    },
    ["0402"] = {
        pdfOffset = "-38",
        publicationDate = "May, 1938",
        itemNumber = "Q243"
    },
    ["0403"] = {
        pdfOffset = "-78",
        publicationDate = "June, 1938",
        itemNumber = "Q244"
    },
    ["0404"] = {
        pdfOffset = "-118",
        publicationDate = "July, 1938",
        itemNumber = "Q245"
    },
    ["0405"] = {
        pdfOffset = "-158",
        publicationDate = "August, 1938",
        itemNumber = "Q246"
    },
    ["0406"] = {
        pdfOffset = "-200",
        publicationDate = "September, 1938",
        itemNumber = "Q247"
    },
    ["0407"] = {
        pdfOffset = "-240",
        publicationDate = "October, 1938",
        itemNumber = "Q248"
    },
    ["0408"] = {
        pdfOffset = "-282",
        publicationDate = "November, 1938",
        itemNumber = "Q249"
    },
    ["0409"] = {
        pdfOffset = "-322",
        publicationDate = "December, 1938",
        itemNumber = "Q250"
    },
    ["0410"] = {
        pdfOffset = "-362",
        publicationDate = "January, 1939",
        itemNumber = "Q251"
    },
    ["0411"] = {
        pdfOffset = "-402",
        publicationDate = "February, 1939",
        itemNumber = "Q252"
    },
    ["0412"] = {
        pdfOffset = "-442",
        publicationDate = "March, 1939",
        itemNumber = "Q253"
    },
    ["0501"] = {
        pdfOffset = "2",
        publicationDate = "April, 1939",
        itemNumber = "Q255"
    },
    ["0502"] = {
        pdfOffset = "-38",
        publicationDate = "May, 1939",
        itemNumber = "Q256"
    },
    ["0503"] = {
        pdfOffset = "-78",
        publicationDate = "June, 1939",
        itemNumber = "Q257"
    },
    ["0504"] = {
        pdfOffset = "-118",
        publicationDate = "July, 1939",
        itemNumber = "Q258"
    },
    ["0505"] = {
        pdfOffset = "-158",
        publicationDate = "August, 1939",
        itemNumber = "Q259"
    },
    ["0506"] = {
        pdfOffset = "-198",
        publicationDate = "September, 1939",
        itemNumber = "Q260"
    },
    ["0507"] = {
        pdfOffset = "-238",
        publicationDate = "October, 1939",
        itemNumber = "Q261"
    },
    ["0508"] = {
        pdfOffset = "-278",
        publicationDate = "November, 1939",
        itemNumber = "Q262"
    },
    ["0509"] = {
        pdfOffset = "-318",
        publicationDate = "December, 1939",
        itemNumber = "Q263"
    },
    ["0510"] = {
        pdfOffset = "-358",
        publicationDate = "January, 1940",
        itemNumber = "Q264"
    },
    ["0511"] = {
        pdfOffset = "-398",
        publicationDate = "February, 1940",
        itemNumber = "Q265"
    },
    ["0512"] = {
        pdfOffset = "-438",
        publicationDate = "March, 1940",
        itemNumber = "Q266"
    },
    ["0601"] = {
        pdfOffset = "0",
        publicationDate = "April, 1940",
        itemNumber = "Q268"
    },
    ["0602"] = {
        pdfOffset = "-34",
        publicationDate = "May, 1940",
        itemNumber = "Q269"
    },
    ["0603"] = {
        pdfOffset = "-76",
        publicationDate = "June, 1940",
        itemNumber = "Q270"
    },
    ["0604"] = {
        pdfOffset = "-112",
        publicationDate = "July, 1940",
        itemNumber = "Q271"
    },
    ["0605"] = {
        pdfOffset = "-152",
        publicationDate = "August, 1940",
        itemNumber = "Q272"
    },
    ["0606"] = {
        pdfOffset = "-192",
        publicationDate = "September, 1940",
        itemNumber = "Q273"
    },
    ["0607"] = {
        pdfOffset = "-228",
        publicationDate = "October, 1940",
        itemNumber = "Q274"
    },
    ["0608"] = {
        pdfOffset = "-268",
        publicationDate = "November, 1940",
        itemNumber = "Q275"
    },
    ["0609"] = {
        pdfOffset = "-304",
        publicationDate = "December, 1940",
        itemNumber = "Q276"
    },
    ["0610"] = {
        pdfOffset = "-340",
        publicationDate = "January, 1941",
        itemNumber = "Q277"
    },
    ["0611"] = {
        pdfOffset = "-376",
        publicationDate = "February, 1941",
        itemNumber = "Q278"
    },
    ["0612"] = {
        pdfOffset = "-412",
        publicationDate = "March, 1941",
        itemNumber = "Q279"
    },
    ["0701"] = {
        pdfOffset = "2",
        publicationDate = "April, 1941",
        itemNumber = "Q281"
    },
    ["0702"] = {
        pdfOffset = "-38",
        publicationDate = "May, 1941",
        itemNumber = "Q282"
    },
    ["0703"] = {
        pdfOffset = "-82",
        publicationDate = "June, 1941",
        itemNumber = "Q283"
    },
    ["0704"] = {
        pdfOffset = "-119",
        publicationDate = "July, 1941",
        itemNumber = "Q284"
    },
    ["0705"] = {
        pdfOffset = "-154",
        publicationDate = "August, 1941",
        itemNumber = ""
    },
    ["0706"] = {
        pdfOffset = "-186",
        publicationDate = "September, 1941",
        itemNumber = ""
    },
    ["0707"] = {
        pdfOffset = "-222",
        publicationDate = "October, 1941",
        itemNumber = ""
    },
    ["0708"] = {
        pdfOffset = "-258",
        publicationDate = "November, 1941",
        itemNumber = ""
    },
    ["0709"] = {
        pdfOffset = "-294",
        publicationDate = "December, 1941",
        itemNumber = ""
    },
    ["0710"] = {
        pdfOffset = "-330",
        publicationDate = "January, 1942",
        itemNumber = ""
    },
    ["0711"] = {
        pdfOffset = "-366",
        publicationDate = "February, 1942",
        itemNumber = ""
    },
    ["0712"] = {
        pdfOffset = "-402",
        publicationDate = "March, 1942",
        itemNumber = ""
    },
    ["0801"] = {
        pdfOffset = "2",
        publicationDate = "April, 1942",
        itemNumber = ""
    },
    ["0802"] = {
        pdfOffset = "-34",
        publicationDate = "May, 1942",
        itemNumber = ""
    },
    ["0803"] = {
        pdfOffset = "-70",
        publicationDate = "June, 1942",
        itemNumber = ""
    },
    ["0804"] = {
        pdfOffset = "-106",
        publicationDate = "July, 1942",
        itemNumber = ""
    },
    ["0805"] = {
        pdfOffset = "-142",
        publicationDate = "August, 1942",
        itemNumber = ""
    },
    ["0806"] = {
        pdfOffset = "-178",
        publicationDate = "September, 1942",
        itemNumber = ""
    },
    ["0807"] = {
        pdfOffset = "-214",
        publicationDate = "October, 1942",
        itemNumber = ""
    },
    ["0808"] = {
        pdfOffset = "-250",
        publicationDate = "November, 1942",
        itemNumber = ""
    },
    ["0809"] = {
        pdfOffset = "-286",
        publicationDate = "December, 1942",
        itemNumber = ""
    },
    ["0810"] = {
        pdfOffset = "-322",
        publicationDate = "January, 1943",
        itemNumber = ""
    },
    ["0811"] = {
        pdfOffset = "-358",
        publicationDate = "February, 1943",
        itemNumber = ""
    },
    ["0812"] = {
        pdfOffset = "-394",
        publicationDate = "March, 1943",
        itemNumber = ""
    },
    ["0901"] = {
        pdfOffset = "2",
        publicationDate = "April, 1943",
        itemNumber = ""
    },
    ["0902"] = {
        pdfOffset = "-34",
        publicationDate = "May, 1943",
        itemNumber = ""
    },
    ["0903"] = {
        pdfOffset = "-70",
        publicationDate = "June, 1943",
        itemNumber = ""
    },
    ["0904"] = {
        pdfOffset = "-106",
        publicationDate = "July, 1943",
        itemNumber = ""
    },
    ["0905"] = {
        pdfOffset = "-142",
        publicationDate = "August, 1943",
        itemNumber = ""
    },
    ["0906"] = {
        pdfOffset = "-178",
        publicationDate = "September, 1943",
        itemNumber = ""
    },
    ["0907"] = {
        pdfOffset = "-214",
        publicationDate = "October, 1943",
        itemNumber = ""
    },
    ["0908"] = {
        pdfOffset = "-250",
        publicationDate = "November, 1943",
        itemNumber = ""
    },
    ["0909"] = {
        pdfOffset = "-286",
        publicationDate = "December, 1943",
        itemNumber = ""
    },
    ["0910"] = {
        pdfOffset = "-324",
        publicationDate = "January, 1944",
        itemNumber = ""
    },
    ["0911"] = {
        pdfOffset = "-360",
        publicationDate = "February, 1944",
        itemNumber = ""
    },
    ["0912"] = {
        pdfOffset = "-396",
        publicationDate = "March, 1944",
        itemNumber = ""
    },
    ["1001"] = {
        pdfOffset = "2",
        publicationDate = "April, 1944",
        itemNumber = ""
    },
    ["1002"] = {
        pdfOffset = "-30",
        publicationDate = "May, 1944",
        itemNumber = ""
    },
    ["1003"] = {
        pdfOffset = "-70",
        publicationDate = "June, 1944",
        itemNumber = ""
    },
    ["1004"] = {
        pdfOffset = "-102",
        publicationDate = "July, 1944",
        itemNumber = ""
    },
    ["1005"] = {
        pdfOffset = "-134",
        publicationDate = "August, 1944",
        itemNumber = ""
    },
    ["1006"] = {
        pdfOffset = "-166",
        publicationDate = "September, 1944",
        itemNumber = ""
    },
    ["1007"] = {
        pdfOffset = "-198",
        publicationDate = "October, 1944",
        itemNumber = ""
    },
    ["1008"] = {
        pdfOffset = "-230",
        publicationDate = "November, 1944",
        itemNumber = ""
    },
    ["1009"] = {
        pdfOffset = "-262",
        publicationDate = "December, 1944",
        itemNumber = ""
    },
    ["1010"] = {
        pdfOffset = "-396",
        publicationDate = "January, 1945",
        itemNumber = ""
    },
    ["1011"] = {
        pdfOffset = "-328",
        publicationDate = "February, 1945",
        itemNumber = ""
    },
    ["1012"] = {
        pdfOffset = "-358",
        publicationDate = "March, 1945",
        itemNumber = ""
    },
    ["1101"] = {
        pdfOffset = "2",
        publicationDate = "April, 1945",
        itemNumber = ""
    },
    ["1102"] = {
        pdfOffset = "-30",
        publicationDate = "May, 1945",
        itemNumber = ""
    },
    ["1103"] = {
        pdfOffset = "-62",
        publicationDate = "June, 1945",
        itemNumber = ""
    },
    ["1104"] = {
        pdfOffset = "-94",
        publicationDate = "July, 1945",
        itemNumber = ""
    },
    ["1105"] = {
        pdfOffset = "-126",
        publicationDate = "August, 1945",
        itemNumber = ""
    },
    ["1106"] = {
        pdfOffset = "-158",
        publicationDate = "September, 1945",
        itemNumber = ""
    },
    ["1107"] = {
        pdfOffset = "-190",
        publicationDate = "October, 1945",
        itemNumber = ""
    },
    ["1108"] = {
        pdfOffset = "-222",
        publicationDate = "November, 1945",
        itemNumber = ""
    },
    ["1109"] = {
        pdfOffset = "-254",
        publicationDate = "December, 1945",
        itemNumber = ""
    },
    ["1110"] = {
        pdfOffset = "-286",
        publicationDate = "January, 1946",
        itemNumber = ""
    },
    ["1111"] = {
        pdfOffset = "-318",
        publicationDate = "February, 1946",
        itemNumber = ""
    },
    ["1112"] = {
        pdfOffset = "-350",
        publicationDate = "March, 1946",
        itemNumber = ""
    },
    ["1201"] = {
        pdfOffset = "2",
        publicationDate = "April, 1946",
        itemNumber = ""
    },
    ["1202"] = {
        pdfOffset = "-30",
        publicationDate = "May, 1946",
        itemNumber = ""
    },
    ["1203"] = {
        pdfOffset = "-62",
        publicationDate = "June, 1946",
        itemNumber = ""
    },
    ["1204"] = {
        pdfOffset = "-94",
        publicationDate = "July, 1946",
        itemNumber = ""
    },
    ["1205"] = {
        pdfOffset = "-126",
        publicationDate = "August, 1946",
        itemNumber = ""
    },
    ["1206"] = {
        pdfOffset = "-158",
        publicationDate = "September, 1946",
        itemNumber = ""
    },
    ["1207"] = {
        pdfOffset = "-190",
        publicationDate = "October, 1946",
        itemNumber = ""
    },
    ["1208"] = {
        pdfOffset = "-222",
        publicationDate = "November, 1946",
        itemNumber = ""
    },
    ["1209"] = {
        pdfOffset = "-254",
        publicationDate = "December, 1946",
        itemNumber = ""
    },
    ["1210"] = {
        pdfOffset = "-286",
        publicationDate = "January, 1947",
        itemNumber = ""
    },
    ["1211"] = {
        pdfOffset = "-318",
        publicationDate = "February, 1947",
        itemNumber = ""
    },
    ["1212"] = {
        pdfOffset = "-350",
        publicationDate = "March, 1947",
        itemNumber = ""
    },
    ["1301"] = {
        pdfOffset = "2",
        publicationDate = "April, 1947",
        itemNumber = ""
    },
    ["1302"] = {
        pdfOffset = "-34",
        publicationDate = "May, 1947",
        itemNumber = ""
    },
    ["1303"] = {
        pdfOffset = "-70",
        publicationDate = "June, 1947",
        itemNumber = ""
    },
    ["1304"] = {
        pdfOffset = "-106",
        publicationDate = "July, 1947",
        itemNumber = ""
    },
    ["1305"] = {
        pdfOffset = "-142",
        publicationDate = "August, 1947",
        itemNumber = ""
    },
    ["1306"] = {
        pdfOffset = "-178",
        publicationDate = "September, 1947",
        itemNumber = ""
    },
    ["1307"] = {
        pdfOffset = "-214",
        publicationDate = "October, 1947",
        itemNumber = ""
    },
    ["1308"] = {
        pdfOffset = "-250",
        publicationDate = "November, 1947",
        itemNumber = ""
    },
    ["1309"] = {
        pdfOffset = "-250",
        publicationDate = "December, 1947",
        itemNumber = ""
    },
    ["1310"] = {
        pdfOffset = "-312",
        publicationDate = "January, 1948",
        itemNumber = ""
    },
    ["1311"] = {
        pdfOffset = "-358",
        publicationDate = "February, 1948",
        itemNumber = ""
    },
    ["1312"] = {
        pdfOffset = "-394",
        publicationDate = "March, 1948",
        itemNumber = ""
    },
    ["1401"] = {
        pdfOffset = "2",
        publicationDate = "April, 1948",
        itemNumber = ""
    },
    ["1402"] = {
        pdfOffset = "-34",
        publicationDate = "May, 1948",
        itemNumber = ""
    },
    ["1403"] = {
        pdfOffset = "-70",
        publicationDate = "June, 1948",
        itemNumber = ""
    },
    ["1404"] = {
        pdfOffset = "-106",
        publicationDate = "July, 1948",
        itemNumber = ""
    },
    ["1405"] = {
        pdfOffset = "-142",
        publicationDate = "August, 1948",
        itemNumber = ""
    },
    ["1406"] = {
        pdfOffset = "-178",
        publicationDate = "September, 1948",
        itemNumber = ""
    },
    ["1407"] = {
        pdfOffset = "-214",
        publicationDate = "October, 1948",
        itemNumber = ""
    },
    ["1408"] = {
        pdfOffset = "-250",
        publicationDate = "November, 1948",
        itemNumber = ""
    },
    ["1409"] = {
        pdfOffset = "-286",
        publicationDate = "December, 1948",
        itemNumber = ""
    },
    ["1410"] = {
        pdfOffset = "-322",
        publicationDate = "January, 1949",
        itemNumber = ""
    },
    ["1411"] = {
        pdfOffset = "-358",
        publicationDate = "February, 1949",
        itemNumber = ""
    },
    ["1412"] = {
        pdfOffset = "-394",
        publicationDate = "March, 1949",
        itemNumber = ""
    }
}

-- Function to generate padded keys (No change needed)
function getPaddedKey(vol, iss)
    local volPadded = string.format("%02d", vol)
    local issPadded = string.format("%02d", iss)
    return volPadded .. issPadded
end

-- Accept the input as the volume/issue number, return date published
function module.publicationDate(frame)
    local volNumber = tonumber(frame.args[1])
    local issNumber = tonumber(frame.args[2])
    local key = getPaddedKey(volNumber, issNumber)
    if combined_map[key] then
        return combined_map[key].publicationDate
    else
        return nil -- or some default value or error message
    end
end

-- Accept the input as volume number, return pdf page number offset
function module.pdfOffset(frame)
    local volumeNumber = tonumber(frame.args[1])
    local issueNumber = tonumber(frame.args[2])
    local key = getPaddedKey(volumeNumber, issueNumber)
    if combined_map[key] then
        return combined_map[key].pdfOffset
    else
        return nil -- or some default value or error message
    end
end

-- BEGIN SECTION WHICH RETURNS AN ARTICLE OR AUTHOR BY VOL/ISSUE/PAGE NUMBER --
-- Usage: [[Template:Citewo]] 

-- Internal function to fetch article IDs from an issue item
function module.fetchArticleIDs(issueItemID)
    local issueItem = mw.wikibase.getEntity(issueItemID)
    local articleIDs = {}

    if not issueItem or not issueItem.claims then
        return articleIDs
    end

    local articlesPropertyID = 'P4'
    local articles = issueItem.claims[articlesPropertyID]

    if not articles then
        return articleIDs
    end

    for _, articleSnak in ipairs(articles) do
        if articleSnak.mainsnak and articleSnak.mainsnak.datavalue then
            local articleID = articleSnak.mainsnak.datavalue.value.id
            table.insert(articleIDs, articleID)
        end
    end

    return articleIDs
end

-- Internal function to parse a page range string
function module.parsePageRange(pageRange)
    local startPage, endPage = pageRange:match("(%d+)-?(%d*)")
    startPage = tonumber(startPage)
    endPage = (endPage ~= "" and tonumber(endPage)) or startPage
    return startPage, endPage
end

-- Internal function to fetch article page ranges from a list of article IDs
function module.fetchArticlePageRanges(articleIDs)
    local articlePageRanges = {}

    for _, articleID in ipairs(articleIDs) do
        local articleItem = mw.wikibase.getEntity(articleID)
        
        if articleItem and articleItem.claims then
            local pagesPropertyID = 'P6'
            local pagesClaims = articleItem.claims[pagesPropertyID]

            if pagesClaims then
                for _, pagesSnak in ipairs(pagesClaims) do
                    if pagesSnak.mainsnak and pagesSnak.mainsnak.datavalue then
                        local pageRange = pagesSnak.mainsnak.datavalue.value
                        local startPage, endPage = module.parsePageRange(pageRange)
                        table.insert(articlePageRanges, {id = articleID, startPage = startPage, endPage = endPage})
                    end
                end
            end
        end
    end

    return articlePageRanges
end

-- Function to find an article by page number
function module.findArticleByPageNumber(articlePageRanges, queriedPage)
    local primaryMatch = nil
    local secondaryMatch = nil

    -- Check for Article Start
    for _, article in ipairs(articlePageRanges) do
        if article.startPage == queriedPage then
            primaryMatch = article.id
            break
        elseif queriedPage >= article.startPage and queriedPage <= article.endPage then
            secondaryMatch = article.id
        end
    end

    -- Return primary match or secondary match
    return primaryMatch or secondaryMatch
end

-- Internal function to get the article ID based on volume, issue, and page
function module.getArticleIDByPage(vol, iss, page)
    local mapKey = string.format("%02d%02d", tonumber(vol), tonumber(iss))
    local issueItemID = combined_map[mapKey] and combined_map[mapKey].itemNumber
    if not issueItemID then
        return nil, "Issue item ID not found for the given volume and issue."
    end

    local articleIDs = module.fetchArticleIDs(issueItemID)
    local articlePageRanges = module.fetchArticlePageRanges(articleIDs)
    local articleID = module.findArticleByPageNumber(articlePageRanges, page)

    return articleID
end

-- Function to fetch the author of an article item
function module.fetchArticleAuthor(articleID)
    local articleItem = mw.wikibase.getEntity(articleID)
    if articleItem and articleItem.claims then
        local authorPropertyID = 'P10'  -- Replace with the actual property ID for "author"
        local authorClaims = articleItem.claims[authorPropertyID]

        -- Check for author
        if authorClaims then
            for _, authorSnak in ipairs(authorClaims) do
                if authorSnak.mainsnak and authorSnak.mainsnak.datavalue then
                    -- Assuming the author is stored as an item
                    local authorID = authorSnak.mainsnak.datavalue.value.id
                    local authorItem = mw.wikibase.getEntity(authorID)
                    if authorItem then
                        local authorName = authorItem.labels.en.value  -- Assuming the name is in English
                        return authorName
                    end
                end
            end
        end

        -- Check for editorial (Q19)
        local editorialPropertyID = 'P12'
        local editorialClaims = articleItem.claims[editorialPropertyID]
        if editorialClaims then
            for _, editorialSnak in ipairs(editorialClaims) do
                if editorialSnak.mainsnak and editorialSnak.mainsnak.datavalue then
                    local editorialID = editorialSnak.mainsnak.datavalue.value.id
                    if editorialID == "Q19" then  -- Assuming Q19 is the ID for "editorial"
                        return "Editorial"
                    end
                end
            end
        end
    end
    return 'Unknown Author'
end

-- External function to be invoked by templates to get article name by page number
function module.getArticleByPage(frame)
    local vol = frame.args.vol
    local iss = frame.args.iss
    local page = tonumber(frame.args.page)

    local articleID, errMsg = module.getArticleIDByPage(vol, iss, page)

    if not articleID then
        return errMsg or "No article found on page " .. tostring(page)
    end

    local articleItem = mw.wikibase.getEntity(articleID)
    local articleName = articleItem and articleItem.labels and articleItem.labels.en and articleItem.labels.en.value or 'Unknown Article Name'
    return articleName
end

-- External function to get article author by page number
function module.getAuthorByPage(frame)
    local vol = frame.args.vol
    local iss = frame.args.iss
    local page = tonumber(frame.args.page)

    local articleID, errMsg = module.getArticleIDByPage(vol, iss, page)

    if not articleID then
        return errMsg or "No article found on page " .. tostring(page)
    end

    return module.fetchArticleAuthor(articleID)
end
-- END SECTION WHICH RETURNS AN ARTICLE OR AUTHOR BY VOL/ISSUE/PAGE NUMBER --

--External function to check if itemNumber exists given vol/iss/page
function module.checkItemNumber(frame)
    local vol = frame.args.vol
    local iss = frame.args.iss
    local mapKey = string.format("%02d%02d", tonumber(vol), tonumber(iss))
    local item = combined_map[mapKey]

    if item and item.itemNumber ~= "" then
        return "true" -- itemNumber exists and is not empty
    else
        return "false" -- itemNumber does not exist or is empty
    end
end

-- External function to retrieve a list of article titles for a given volume and issue
function module.getArticleTitles(frame)
    local vol = frame.args.vol
    local iss = frame.args.iss

    local mapKey = string.format("%02d%02d", tonumber(vol), tonumber(iss))
    local issueItemID = combined_map[mapKey] and combined_map[mapKey].itemNumber
    if not issueItemID then
        return "Issue item ID not found for the given volume and issue."
    end

    local articleIDs = module.fetchArticleIDs(issueItemID)
    local articleTitles = {}

    for _, articleID in ipairs(articleIDs) do
        local articleItem = mw.wikibase.getEntity(articleID)
        local articleTitle = articleItem and articleItem.labels and articleItem.labels.en and articleItem.labels.en.value or 'Unknown Article Title'
        table.insert(articleTitles, articleTitle)
    end

    return table.concat(articleTitles, ", ")
end

return module
Obtenido de «https://es.bahaipedia.org/index.php?title=Módulo:WorldOrder&oldid=2456»
Esta página se editó por última vez el 3 ene 2024 a las 09:56.
El contenido está disponible bajo la licencia Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License a menos que se indique lo contrario.
Política de privacidad
Acerca de Bahaipedia
Descargos
Powered by MediaWiki