「モジュール:SignalinstWiki」の版間の差分

全カテゴリの全ページをテンプレートとして吐き出す関数の作成(一時保存)
編集の要約なし
 
(同じ利用者による、間の13版が非表示)
74行目: 74行目:
     return finalOutput
     return finalOutput
end
end


function p.categoriesToTemplate(frame)
function p.categoriesToTemplate(frame)
-- 返すべき内容を保持する
    local args = {
local output = ""
        title = "カテゴリ一覧",
        opened = "False"
-- パーサーを呼び出し、Semantec MediaWikiからカテゴリ一覧を取得
    }
local result = frame:callParserFunction("#ask", "[[TopCategory::true]]|?PAGENAME|format=plainlist")
 
    local categories = mw.text.trim(
-- 中身を正規化したうえで分割し、各カテゴリごとに回す
        frame:expandTemplate{ title = "カテゴリ一覧" } or ""
for line in mw.text.gsplit(result, "\n", true) do
    )
if line ~= '' then
 
-- line = 名前空間を除いたタイトル => カテゴリ名称
    local i = 1
-- このカテゴリに対して意味的検索を用いてさらにページ一覧を取得
    for category in mw.text.gsplit(categories, ",", true) do
-- local result = frame:callParserFunction("#ask", "[[TopCategory::true]]|?PAGENAME|format=plainlist") TODO: 途中
        category = mw.text.trim(category)
end
        if category ~= "" then
end
            local categoryName = mw.text.trim(
                category:gsub("^カテゴリ:", "")
return output
            )
 
            local pages = mw.text.trim(
                frame:expandTemplate{
                    title = "カテゴリ別ページ一覧",
                    args = { category }
                } or ""
            )
 
            args["header" .. i]  = "[[:カテゴリ:"..categoryName.."|"..categoryName.."]]"
            args["content" .. i] = pages
 
            i = i + 1
        end
    end
 
    return frame:expandTemplate{
        title = "ナビゲーションボックス",
        args  = args
    }
end
end


return p
return p