モジュール:sux-registers

出典: フリー多機能辞典『ウィクショナリー日本語版(Wiktionary)』
ナビゲーションに移動 検索に移動

このモジュールについての説明文ページを モジュール:sux-registers/doc に作成できます

local export = {}
local m_register_data = mw.loadData("モジュール:sux-registers/data")
local lang = require("モジュール:languages").getByCode("sux")
local m_links = require("モジュール:links")
local m_strutils = require("モジュール:string utilities")

local function format_list_items(items)
    local result = {}

    for _, item in ipairs(items) do
        item = m_links.full_link { lang = lang, term = item.term, tr = item.tr }
        table.insert(result, '\n' .. item)
    end

    return table.concat(result)
end

function export.create_list(args)
    if type(args) ~= "table" then
        error("expected table, got " .. type(args))
    end

    local output = {}

    table.insert(output, [[<div class="term-list ul-column-count" data-column-count="1" >]])

    table.insert(output, format_list_items(args))

    table.insert(output, '</div>')

    return table.concat(output)
end

function export.show(frame)
    local args = frame:getParent().args

    if args[1] or args[1] ~= "" then
        meaning = args[1]
    else
        error("意味を指定して下さい")
    end

    local data = m_register_data[meaning] or nil

    if data then
        local emegir = data.emegir
        local emesal = data.emesal

        local template = [===[
        {| class="floatright wikitable" style="max-width: 25em;"
        |+ style="text-align:center; white-space: nowrap;"| “{meaning}”
        |- style="text-align:center;"
        ! エメギル
        | {emegir}
        |- style="text-align:center;"
        ! エメサル
        | {emesal}
        |-
        |{\cl}]===]

        local forms = {}

        forms["meaning"] = meaning
        forms["emegir"] = export.create_list(emegir)
        forms["emesal"] = export.create_list(emesal)

        return m_strutils.format(template, forms)
    else
        error("“" .. meaning .. "” は[[モジュール:sux-registers/data]]にありません。")
    end
end

return export