モジュール:Sidebar

出典: 謎の百科事典もどき『エンペディア(Enpedia)』
ナビゲーションに移動 検索に移動

この説明文は 『 モジュール:Sidebar/doc 』 から呼び出されています。

詳細は「Template:Sidebar」を参照

local p = {}

function p.main(frame)
  local args = require('モジュール:Arguments').getArgs(frame, {
    wrappers = 'テンプレート:Sidebar',
    removeBlanks = false
  })

  -- 使用変数のnil避け
  local group, list, output = '', '', ''

  -- {{Sidebar}}からの引数を受け取る
  local groupcolor = args.groupcolor or ''
  local grouptextcolor = args.grouptextcolor or ''
  local groupstyle = args.groupstyle or ''
  local liststyle = args.liststyle or ''

  local g_clr_before12 = groupcolor == '' and '#aaa' or groupcolor
  local g_clr_from12 = groupcolor == '' and '#cedaf2' or groupcolor
  local g_txt_clr = grouptextcolor == '' and '#000' or grouptextcolor

  -- ループ行の開始 / そんなに何書くんだと思いつつ最大100行(<tr>)
  local g_clr = ''
  for i = 1, 100, 1 do
    g_clr = i < 12 and g_clr_before12 or g_clr_from12
    -- 引数を受け取る
    group = args['group' .. i] or ''
    list = args['list' .. i] or ''

    -- list の内容があった場合のみ行を追加
    if list ~= '' and list ~= nil then
      -- 行(tr)を追加
      output = output .. table.concat({
        '<tr>',
        '<td style="width:6.5em;text-align:right;padding-right:2px;',
        'background-color:', g_clr, ';',
        'color:', g_txt_clr, ';', groupstyle, '"><b>', group, '</b></td>',
        '<td style="padding-left: 2px;', liststyle, '">', list, '</td>',
        '</tr>'
      })
    end
  end
  return output
end

return p