模块:Html:修订间差异

来自乐园数据管理室
ヒカリ​(留言 | 贡献)
无编辑摘要
ヒカリ​(留言 | 贡献)
无编辑摘要
第1行: 第1行:
local p = {}
local p = {}


function p.wikitable(schema, data)
function p.wikitable(schema, data, transpose)
  transpose = transpose or nil
   local out = ""
   local out = ""


   if schema[1]["scope"] then
   if schema[1]["scope"] then
     -- 数据为dict形式
     -- 数据为dict形式
     for i, field in ipairs(schema) do
     if transpose then
       out = out .. "<th>" .. field["label"] .. "</th>"
      -- 转置
    end
      for _, field in ipairs(schema) do
    out = "<tr>" .. out .. "</tr>"
        local rowHtml = ""
        rowHtml = rowHtml .. "<th>" .. field.label .. "</th>"
 
        for _, row in ipairs(data) do
          rowHtml = rowHtml .. "<td>" .. row[field.scope] .. "</td>"
        end
        rowHtml = "<tr>" .. rowHtml .. "</tr>"
        out = out .. rowHtml
       end
    else
      for _, field in ipairs(schema) do
        out = out .. "<th>" .. field["label"] .. "</th>"
      end
      out = "<tr>" .. out .. "</tr>"


    for i, row in ipairs(data) do
      for _, row in ipairs(data) do
      local rowHtml = ""
        local rowHtml = ""


      for i, field in ipairs(schema) do
        for _, field in ipairs(schema) do
        rowHtml = rowHtml .. "<td>" .. row[field["scope"]] .. "</td>"
          rowHtml = rowHtml .. "<td>" .. row[field.scope] .. "</td>"
        end
        rowHtml = "<tr>" .. rowHtml .. "</tr>"
        out = out .. rowHtml
       end
       end
      rowHtml = "<tr>" .. rowHtml .. "</tr>"
      out = out .. rowHtml
     end
     end
   else
   else
     -- 数据为array形式
     -- 数据为array形式
    for i, label in ipairs(schema) do
      out = out .. "<th>" .. label .. "</th>"
    end
    out = "<tr>" .. out .. "</tr>"


     for i, row in ipairs(data) do
     if transpose then
       local rowHtml = ""
      -- 转置
      for i, label in ipairs(schema) do
        local rowHtml = ""
        rowHtml = rowHtml .. "<th>" .. label .. "</th>"
 
        for _, row in ipairs(data) do
          rowHtml = rowHtml .. "<td>" .. row[i] .. "</td>"
        end
        rowHtml = "<tr>" .. rowHtml .. "</tr>"
        out = out .. rowHtml
      end
    else
       for _, label in ipairs(schema) do
        out = out .. "<th>" .. label .. "</th>"
      end
      out = "<tr>" .. out .. "</tr>"
 
      for _, row in ipairs(data) do
        local rowHtml = ""


      for i, label in ipairs(schema) do
        for i, _ in ipairs(schema) do
        rowHtml = rowHtml .. "<td>" .. row[i] .. "</td>"
          rowHtml = rowHtml .. "<td>" .. row[i] .. "</td>"
        end
        rowHtml = "<tr>" .. rowHtml .. "</tr>"
        out = out .. rowHtml
       end
       end
      rowHtml = "<tr>" .. rowHtml .. "</tr>"
      out = out .. rowHtml
     end
     end
   end
   end
第40行: 第70行:
   out = '<table class="wikitable">' .. out .. "</table>\n"
   out = '<table class="wikitable">' .. out .. "</table>\n"
   return out
   return out
end
function p.h2(text)
  return "<h2>" .. text .. "</h2>"
end
function p.h3(text)
  return "<h3>" .. text .. "</h3>"
end
function p.h4(text)
  return "<h4>" .. text .. "</h4>"
end
end


return p
return p

2019年4月23日 (二) 16:23的版本

wikitable

wikitable(schema, data)

  • schema: 表头
  • data: 表格数据

Example

数组方式

 wikitable(
   {"col1", "col2", "col3"},
   {
     {1, 2, 3},
     {4, 5, 6},
     {7, 8, 9}
   }
 )

字典方式

 wikitable(
   {
     {
       ["scope"] = "a",
       ["label"] = "col1"
     },
     {
       ["scope"] = "b",
       ["label"] = "col2"
     },
     {
       ["scope"] = "c",
       ["label"] = "col3"
     }
   },
   {
     {["a"] = 1, ["b"] = 2, ["c"] = 3},
     {["a"] = 4, ["b"] = 5, ["c"] = 6},
     {["a"] = 7, ["b"] = 8, ["c"] = 9}
   }
 )

local p = {}

function p.wikitable(schema, data, transpose)
  transpose = transpose or nil
  local out = ""

  if schema[1]["scope"] then
    -- 数据为dict形式
    if transpose then
      -- 转置
      for _, field in ipairs(schema) do
        local rowHtml = ""
        rowHtml = rowHtml .. "<th>" .. field.label .. "</th>"

        for _, row in ipairs(data) do
          rowHtml = rowHtml .. "<td>" .. row[field.scope] .. "</td>"
        end
        rowHtml = "<tr>" .. rowHtml .. "</tr>"
        out = out .. rowHtml
      end
    else
      for _, field in ipairs(schema) do
        out = out .. "<th>" .. field["label"] .. "</th>"
      end
      out = "<tr>" .. out .. "</tr>"

      for _, row in ipairs(data) do
        local rowHtml = ""

        for _, field in ipairs(schema) do
          rowHtml = rowHtml .. "<td>" .. row[field.scope] .. "</td>"
        end
        rowHtml = "<tr>" .. rowHtml .. "</tr>"
        out = out .. rowHtml
      end
    end
  else
    -- 数据为array形式

    if transpose then
      -- 转置
      for i, label in ipairs(schema) do
        local rowHtml = ""
        rowHtml = rowHtml .. "<th>" .. label .. "</th>"

        for _, row in ipairs(data) do
          rowHtml = rowHtml .. "<td>" .. row[i] .. "</td>"
        end
        rowHtml = "<tr>" .. rowHtml .. "</tr>"
        out = out .. rowHtml
      end
    else
      for _, label in ipairs(schema) do
        out = out .. "<th>" .. label .. "</th>"
      end
      out = "<tr>" .. out .. "</tr>"

      for _, row in ipairs(data) do
        local rowHtml = ""

        for i, _ in ipairs(schema) do
          rowHtml = rowHtml .. "<td>" .. row[i] .. "</td>"
        end
        rowHtml = "<tr>" .. rowHtml .. "</tr>"
        out = out .. rowHtml
      end
    end
  end

  out = '<table class="wikitable">' .. out .. "</table>\n"
  return out
end

function p.h2(text)
  return "<h2>" .. text .. "</h2>"
end

function p.h3(text)
  return "<h3>" .. text .. "</h3>"
end

function p.h4(text)
  return "<h4>" .. text .. "</h4>"
end

return p