Difference between revisions of "Module:Infobox"

From Minetest Wiki
Jump to navigation Jump to search
(Created page with "local p = {} local HtmlBuilder = require("Module:HtmlBuilder") local animateImages = require("Module:Animated")._images function p.block(frame) local args = getArgs(fram...")
 
m (Added table properties)
Line 20: Line 20:
 
         image = args.image,
 
         image = args.image,
 
         description = "A [[Blocks|block]]",
 
         description = "A [[Blocks|block]]",
         wherein = args.wherein
+
         wherein = args.wherein,
 +
        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")
Line 36: Line 37:
 
function p.infobox(args)
 
function p.infobox(args)
 
     local name = args.name
 
     local name = args.name
 +
    local width = args.width or "200px"
 
     local description = args.description .. " in " .. (args.wherein or "[[Subgames/Minetest Game|Minetest Game]]")
 
     local description = args.description .. " in " .. (args.wherein or "[[Subgames/Minetest Game|Minetest Game]]")
 
     local image = args.image or "Minetest logo.png"
 
     local image = args.image or "Minetest logo.png"
Line 45: Line 47:
 
     end
 
     end
 
     return HtmlBuilder.create("table")
 
     return HtmlBuilder.create("table")
 +
        :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)
 
         :tag("tr")
 
         :tag("tr")
 
             :tag("th")
 
             :tag("th")

Revision as of 22:55, 10 April 2017

local p = {}

local HtmlBuilder = require("Module:HtmlBuilder") local animateImages = require("Module:Animated")._images

function p.block(frame)

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

end

local function addInfoRow(infobox, name, info)

   local row = infobox:tag("tr")
   row:tag("td"):wikitext(name)
   row:tag("td"):wikitext(info)

end

function p._block(args)

   local infobox = p.infobox({
       name = args.name or args.block_name or "A block",
       image = args.image,
       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.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 imageText
   if string.match(image, ",") then
       imageText = animateImages({image, "150px"})
   else
       imageText = "150px"
   end
   return HtmlBuilder.create("table")
       :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)
       :tag("tr")
           :tag("th")
               :attr("colspan", 2)
               :css("font-size", "110%")
               :css("text-align", "center")
               :wikitext(name)
               :done()
           :done()
       :tag("tr")
           :tag("th")
               :attr("colspan", 2)
               :tag("div")
                   :addClass("center")
                   :wikitext(imageText)
                   :done()
               :done()
           :done()
       :tag("tr")
           :tag("th")
               :attr("colspan", 2)
               :attr("align", "center")
               :wikitext(description)
               :allDone()

end

return p