Difference between revisions of "Module:Infobox"

From Minetest Wiki
Jump to navigation Jump to search
m (Replaced HtmlBuilder with TableBuilder)
m (Used header cell instead of manual bold formatting)
Line 17: Line 17:
 
local function addInfoRow(infobox, name, info)
 
local function addInfoRow(infobox, name, info)
 
     local row = infobox:addRow()
 
     local row = infobox:addRow()
     row:addData():wikitext(name)
+
     row:addHeader():wikitext(name)
 
     row:addData():wikitext(info)
 
     row:addData():wikitext(info)
 
end
 
end
Line 30: Line 30:
 
         width = args.width
 
         width = args.width
 
     })
 
     })
     addInfoRow(infobox, "'''Type'''", args.type or args.block_type or "Solid block")
+
     addInfoRow(infobox, "Type", args.type or args.block_type or "Solid block")
     addInfoRow(infobox, "'''[[Mining#Drops|Drops]]'''", args.drops or "''Itself''")
+
     addInfoRow(infobox, "[[Mining#Drops|Drops]]", args.drops or "''Itself''")
     addInfoRow(infobox, "'''[[:Category:Falling|Physics]]'''", args.physics or "No")
+
     addInfoRow(infobox, "[[:Category:Falling|Physics]]", args.physics or "No")
     addInfoRow(infobox, "'''[[:Category:Luminous|Luminance]]'''", args.luminance or "No")
+
     addInfoRow(infobox, "[[:Category:Luminous|Luminance]]", args.luminance or "No")
     addInfoRow(infobox, "'''[[:Category:Flammable|Flammable]]'''", args.flammable or "No")
+
     addInfoRow(infobox, "[[:Category:Flammable|Flammable]]", args.flammable or "No")
     addInfoRow(infobox, "'''[[:Category:Generated_blocks|Generated]]'''", args.generated or "Yes")
+
     addInfoRow(infobox, "[[:Category:Generated_blocks|Generated]]", args.generated or "Yes")
     addInfoRow(infobox, "'''Renewable'''", args.renewable or "No")
+
     addInfoRow(infobox, "Renewable", args.renewable or "No")
     addInfoRow(infobox, "'''Stackable'''", args.stackable or "Yes (99)")
+
     addInfoRow(infobox, "Stackable", args.stackable or "Yes (99)")
     addInfoRow(infobox, "'''[[Itemstrings|Itemstring]]'''", args.itemstring or "''?''")
+
     addInfoRow(infobox, "[[Itemstrings|Itemstring]]", args.itemstring or "''?''")
 
     return tostring(infobox)
 
     return tostring(infobox)
 
end
 
end
Line 51: Line 51:
 
         width = args.width
 
         width = args.width
 
     })
 
     })
     addInfoRow(infobox, "'''Type'''", args.type or args.item_type or "Craftitem")
+
     addInfoRow(infobox, "Type", args.type or args.item_type or "Craftitem")
     addInfoRow(infobox, "'''Renewable'''", args.renewable or "No")
+
     addInfoRow(infobox, "Renewable", args.renewable or "No")
     addInfoRow(infobox, "'''Durability'''", args.durability or "''N/A''")
+
     addInfoRow(infobox, "Durability", args.durability or "''N/A''")
     addInfoRow(infobox, "'''Stackable'''", args.stackable or "Yes (99)")
+
     addInfoRow(infobox, "Stackable", args.stackable or "Yes (99)")
     addInfoRow(infobox, "'''[[Itemstrings|Itemstring]]'''", args.itemstring or "''?''")
+
     addInfoRow(infobox, "[[Itemstrings|Itemstring]]", args.itemstring or "''?''")
 
     return tostring(infobox)
 
     return tostring(infobox)
 
end
 
end

Revision as of 05:21, 11 April 2017

local p = {}

local TableBuilder = require("Module:TableBuilder") local animateImages = require("Module:Animated")._images local getArgs = require('Module:Arguments').getArgs

function p.block(frame)

   local args = getArgs(frame, {inherited = true})
   return p._block(args)

end

function p.item(frame)

   local args = getArgs(frame, {inherited = true})
   return p._item(args)

end

local function addInfoRow(infobox, name, info)

   local row = infobox:addRow()
   row:addHeader():wikitext(name)
   row:addData():wikitext(info)

end

function p._block(args)

   local infobox = p.infobox({
       name = args.name or args.block_name or "A block",
       image = args.image,
       imageSize = "150px",
       description = "A block",
       wherein = args.wherein,
       width = args.width
   })
   addInfoRow(infobox, "Type", args.type or args.block_type or "Solid block")
   addInfoRow(infobox, "Drops", args.drops or "Itself")
   addInfoRow(infobox, "Physics", args.physics or "No")
   addInfoRow(infobox, "Luminance", args.luminance or "No")
   addInfoRow(infobox, "Flammable", args.flammable or "No")
   addInfoRow(infobox, "Generated", args.generated or "Yes")
   addInfoRow(infobox, "Renewable", args.renewable or "No")
   addInfoRow(infobox, "Stackable", args.stackable or "Yes (99)")
   addInfoRow(infobox, "Itemstring", args.itemstring or "?")
   return tostring(infobox)

end

function p._item(args)

   local infobox = p.infobox({
       name = args.name or args.item_name or "An item",
       image = args.image,
       imageSize = "160px",
       description = "An item",
       wherein = args.wherein,
       width = args.width
   })
   addInfoRow(infobox, "Type", args.type or args.item_type or "Craftitem")
   addInfoRow(infobox, "Renewable", args.renewable or "No")
   addInfoRow(infobox, "Durability", args.durability or "N/A")
   addInfoRow(infobox, "Stackable", args.stackable or "Yes (99)")
   addInfoRow(infobox, "Itemstring", args.itemstring or "?")
   return tostring(infobox)

end

function p.infobox(args)

   local name = args.name
   local width = args.width or "200px"
   local description = args.description .. " in " .. (args.wherein or "Minetest Game")
   local image = args.image or "Minetest logo.png"
   local imageSize = args.imageSize
   local imageText
   if string.match(image, ",") then
       imageText = animateImages({image, imageSize})
   else
       imageText = "" .. imageSize .. ""
   end
   return TableBuilder.create()
       :addClass("wikitable")
       :css("float", "right")
       :css("text-align", "left")
       :css("margin", "0 0 0.5em 1em")
       :css("padding", "5px")
       :css("font-size", "90%")
       :css("position", "relative")
       :css("clear", "right")
       :css("overflow", "auto")
       :css("z-index", "1")
       :attr("width", width)
       :addRow()
           :addHeader()
               :attr("colspan", 2)
               :css("font-size", "110%")
               :css("text-align", "center")
               :wikitext(name)
               :done()
           :done()
       :addRow()
           :addHeader()
               :attr("colspan", 2)
               :tag("div")
                   :addClass("center")
                   :wikitext(imageText)
                   :done()
               :done()
           :done()
       :addRow()
           :addHeader()
               :attr("colspan", 2)
               :attr("align", "center")
               :wikitext(description)
               :allDone()

end

return p