Module:Infobox Language

From The K Language Wiki


optional params have a * at the end.

{{Infobox Language
| title = The title
| headerstyle = (defaults to background-color:grey) *
| image = [[File:Logo.svg|200px]] *
| caption = *
| dev = developer
| rel = release date | unknown
| dialects = K(3|4|5|6|7|9) *
| dialect = K(3|4|5|6|7|9) *
| ttype = temporal types | none
| table = yes | no tables
| proto = yes | no
| unicode = full|partial|no support
| implang = single language *
| implangs = multiple languages *
| plats = platforms
| oses = operating systems *
| license = license
| url = [https://website.com name]
| docs = [https://docs.com name]
| runurl = [https://run.com run online]
| influenced = influenced languages *
| infby = influenced by languages *
}}

local capiunto = require 'capiunto'

local p = {}

function p.main(frame)
	local args = frame:getParent().args
	local headerStyle

	if args.headerstyle and args.headerstyle ~= '' then
		headerStyle = string.format('background-color:%s;', args.headerstyle)
	else
		headerStyle = 'background-color:grey;'
	end

	local retval = capiunto.create( {
		title = args.title,
		headerStyle = headerStyle,
	} )

    if args.image then
        if args.caption then
	        retval:addImage(args.image, args.caption)
        else
            retval:addImage(args.image)
        end
    end

	if args.dev then retval:addRow('Developer', args.dev) end
	if args.rel then retval:addRow('Released', args.rel) end

    retval:addWikitext( '<hr>' )
    if args.dialects then retval:addRow('Dialects', args.dialects) end
    if args.dialect then retval:addRow('Dialect', args.dialect) end
    if args.ttype then retval:addRow('Temporal types', args.ttype) end
    if args.table then retval:addRow('Table support', args.table) end
    if args.proto then retval:addRow('Prototypes', args.proto) end
--  if args.unicode then retval:addRow('Unicode support', args.unicode) end

    retval:addWikitext( '<hr>' )
    if args.implang then retval:addRow('Implemented in', args.implang) end
    if args.implangs then retval:addRow('Implemented in', args.implangs) end
    if args.plats then retval:addRow('Platforms', args.plats) end
    if args.oses then retval:addRow('Operating Systems', args.oses) end
    if args.license then retval:addRow('License', args.license) end

    retval:addWikitext( '<hr>' )
    if args.url then retval:addRow('Website', args.url) end
    if args.docs then retval:addRow('Documentation', args.docs) end
    if args.runurl then retval:addRow('Run Online', args.runurl) end

    if args.influenced or args.infby then retval:addWikitext( '<hr>' ) end
    if args.influenced then retval:addRow('Influenced', args.influenced) end
    if args.infby then retval:addRow('Influenced By', args.infby) end

	return retval
end

return p