Module:Infobox user

From Wikinder

Documentation for this module may be created at Module:Infobox user/doc

local exports = {}

local predefinedKeys = {
  'age',
  'pronouns',
  'x',
}

function exports.main(frame)
  local args
  if frame == mw.getCurrentFrame() then
    args = frame:getParent().args
  else
    args = frame
  end

  local tableElement = mw.html.create('table')
  tableElement
    :css('float', 'right')
    :css('text-align', 'left')

  local categories = {}

  for _, key in ipairs(predefinedKeys) do
    if args[key] ~= nil then
      keyText = mw.getContentLanguage():ucfirst(key)

      value = args[key]
      valueText = value
      lowerValue = string.lower(value)

      if key == 'pronouns' then
        table.insert(categories, lowerValue)
      end

      if key == 'x' then
        valueText = string.format(
          '[https://twitter.com/%s @%s]',
          valueText,
          valueText
        )

        table.insert(categories, 'X users')
      end

      tableElement
        :tag('tr')
          :tag('th')
            :wikitext(keyText)
            :done()
          :tag('td')
            :wikitext(valueText)
            :done()
          :done()
    end
  end

  returnValue = tostring(tableElement)

  for _, category in ipairs(categories) do
    returnValue = returnValue
      .. '\n'
      .. string.format('[[Category:%s]]', category)
  end

  return returnValue
end

return exports