[checked revision] | [checked revision] |
m (→top: standardize util_html.printHeaderFromI18n) |
m (→top: HTML -> Html) |
||
Line 1: | Line 1: | ||
local util_args = require('Module:ArgsUtil') |
local util_args = require('Module:ArgsUtil') |
||
− | local util_html = require('Module: |
+ | local util_html = require('Module:HtmlUtil') |
local util_table = require('Module:TableUtil') |
local util_table = require('Module:TableUtil') |
||
local i18n = require('Module:i18nUtil') |
local i18n = require('Module:i18nUtil') |
Latest revision as of 19:46, 17 September 2019
Documentation for this module may be created at Module:CargoDeclare/doc
local util_args = require('Module:ArgsUtil')
local util_html = require('Module:HtmlUtil')
local util_table = require('Module:TableUtil')
local i18n = require('Module:i18nUtil')
local DOC_COLUMNS = { 'field', 'type', 'desc' }
local h = {}
local p = {}
function p.main(frame)
local args = util_args.overwrite(true)
if util_args.castAsBool(args.doc) then
return p.doc(args)
end
if util_args.castAsBool(args.forgadget) then
return p.forGadget(args)
end
return p.declare(args)
end
function p.declare(args)
local tableName = args[1]
local cargoArgs = h.concatFieldsToArgs(h.getArgs(tableName))
return mw.getCurrentFrame():callParserFunction{
name = ('#cargo_declare:_table=%s'):format(tableName),
args = cargoArgs
}
end
function p.doc(args)
i18n.initGlobalFromFile('CargoDeclare')
local tableName = args[1]
return h.makeDocTable(h.getArgs(tableName))
end
function p.forGadget(args)
local cargoArgs = h.getArgs(args[1])
return util_table.concat(cargoArgs, ';;;', h.concatForJson)
end
function h.getArgs(tableName)
return require('Module:CargoDeclare/' .. tableName)
end
function h.concatFieldsToArgs(fields)
util_table.mapInPlace(fields, h.concatFieldToArg)
return fields
end
function h.concatFieldToArg(field)
return ('%s=%s'):format(field.field, field.type)
end
function h.makeDocTable(fields)
local output = mw.html.create('table')
:addClass('wikitable')
util_html.printHeaderFromI18n(output, DOC_COLUMNS)
util_html.printRowsByList(output, fields, DOC_COLUMNS)
return output
end
function h.concatForJson(field)
return ('%s:::%s'):format(field.field, field.desc)
end
return p