ARK: Survival Evolved Wiki
Skylord1496 (discussion | contributions)
Aucun résumé des modifications
Skylord1496 (discussion | contributions)
Aucun résumé des modifications
Ligne 8 : Ligne 8 :
 
local showOne = args.showQuantityOne or false
 
local showOne = args.showQuantityOne or false
 
local asPerCent = args.showQuantityAsPerCent or false
 
local asPerCent = args.showQuantityAsPerCent or false
local noIcon = args.noIcon or false
+
local noDlcIcon = args.noDlcIcon or false
  +
if noDlcIcon and ( noDlcIcon == '' or noDlcIcon == 0) then -- lua evaluates anything to true except nil and false
  +
noDlcIcon = false
  +
end
   
 
if args.columns ~= nil then
 
if args.columns ~= nil then
Ligne 70 : Ligne 73 :
 
local quantitySign = asPerCent and '% ' or ' × '
 
local quantitySign = asPerCent and '% ' or ' × '
 
for _, item in ipairs(itemList) do
 
for _, item in ipairs(itemList) do
local fileName = string.gsub(item[1],':',' ')
+
local fileName = string.gsub(string.gsub(item[1], '[:/]', ' '), '+', '-')
   
table.insert(output, '<li>'..(item[2] ~= nil and item[2]..quantitySign or '')..'[[File:'..fileName..'.png|'..iconsize..']] '..dlclink(item[1],noIcon)..'</li>')
+
table.insert(output, '<li>'..(item[2] ~= nil and item[2]..quantitySign or '')..'[[File:'..fileName..'.png|'..iconsize..']] '..dlclink(item[1],noDlcIcon)..'</li>')
 
end
 
end
   

Version du 7 avril 2020 à 05:51

Template-info Documentation

Liste les objets ou les créatures en les précédant de leur icône.

Attend chaque objet ou créature comme paramètre. Une quantité x, x..y, ou x-y peut être utilisée comme paramètre suivant.

Paramètres

Paramètre Par défaut Description
iconsize 30px taille de l'icône
columns 1 nombre de colonnes
columnWidth 15em largeur de chaque colonne
listtype choisir 'ol' pour une liste numérotée, 'none' pour une liste sans boulets
showQuantityOne false régler sur true montre aussi '1 ×' si la quantité '1' est donnée
showQuantityAsPerCent false régler sur true pour monter par ex. '50%' si la quantité 0.5 est donnée

Utilisation/Exemples

{{ItemList|Ankylosaure|Branchages}}
{{ItemList|iconsize=50px|Argentavis|Quetzal|Ptéranodon}}
{{ItemList|iconsize=20px|columns=2|Branchages|Bois|Viande crue supérieure|Dodo|Mésopithèque|Porte en bois}}
{{ItemList|iconsize=20px|columnWidth=20em|Branchages|Bois|Viande crue supérieure|Dodo|Mésopithèque|Porte en bois}}
{{ItemList|listtype=ol|Baies|Carotte|Maïs}}
  1. Baies Baies
  2. Carotte Carotte
  3. Maïs Maïs
{{ItemList|listtype=none|Baies|Soufre (Scorched Earth)|Argile (Primitive Plus)}}
{{ItemList|Ankylosaure|1|Branchages|10..20}}
{{ItemList|showQuantityOne=true|Ankylosaure|1|Branchages|10-20}}
{{ItemList|showQuantityAsPerCent=true|Marmite suspendue|1|Forge|0.5}}

Affiche une liste séparée par des virgules depuis une liste de données:

{{ItemList|columnWidth=20em|{{Dv|Ptéranodon|canDragCreatures}}}}

local p = {}
function p.itemlist( f )
  local dlclink = require('Module:DLCLink').link
  local args = f:getParent().args

  local listtype, extrastyle = 'ul', ''
  local iconsize = args.iconsize or '30px'
  local showOne = args.showQuantityOne or false
  local asPerCent = args.showQuantityAsPerCent or false
  local noDlcIcon = args.noDlcIcon or false
  if noDlcIcon and ( noDlcIcon == '' or noDlcIcon == 0) then -- lua evaluates anything to true except nil and false
    noDlcIcon = false
  end

  if args.columns ~= nil then
    extrastyle = extrastyle..'column-count:'..args.columns..';'
  end

  if args.columnWidth ~= nil then
    extrastyle = extrastyle..'column-width:'..args.columnWidth..';'
  end

  if args.marginLeft ~= nil then
    extrastyle = extrastyle..'margin-left:'..args.marginLeft..';'
  end

  if args.listtype ~= nil then
    if args.listtype == 'ol' then
      listtype = 'ol'
    else -- none
      extrastyle = extrastyle..'list-style:none;margin-left:0;'
    end
  end

  -- split first value at comma, e.g. for data from module:dv
  local items = {}
  for v in mw.text.gsplit(args[1], ',', true) do
    if #v > 0 then -- skip empty
      table.insert(items, v)
    end
  end

  -- append rest parameters
  for _,v in ipairs(args) do 
    if _ > 1 and #v > 0 then
      table.insert(items, v)
    end
  end

  -- read arguments list into itemList (consists of tables, at index 1 is the text, at index 2 the quantity (optional))
  local itemList, i, lastItem = {}, 0, nil
  for _, item in ipairs(items) do
    item = item:match "^%s*(.-)%s*$" -- trim

    if string.len(item) > 0 then
      if lastItem and (item:match "^[%d.]*$" or item:match "^[%d.]*%-[%d.]*$") then
        if asPerCent then
          itemList[i][2] = item * 100 -- item is per cent value
        elseif item ~= '1' or showOne then
          itemList[i][2] = item -- item is quantity
        end
        lastItem = nil
      else
        table.insert(itemList, {item, nil} ) -- item is text
        i = i + 1
        lastItem = item
      end
    end
  end

  -- output itemList
  local output = {}
  local quantitySign = asPerCent and '% ' or ' × '
  for _, item in ipairs(itemList) do
    local fileName = string.gsub(string.gsub(item[1], '[:/]', ' '), '+', '-')

    table.insert(output, '<li>'..(item[2] ~= nil and item[2]..quantitySign or '')..'[[File:'..fileName..'.png|'..iconsize..']] '..dlclink(item[1],noDlcIcon)..'</li>')
  end

  if #output == 0 then
    return
  end

  -- if the list is long and has no explicit style, break it into columns automatically
  if #output > 5 and extrastyle == '' then
    extrastyle = 'column-width:15em;'
  end

  return '<'..listtype..(extrastyle ~= '' and ' style="'..extrastyle..'"' or '')..'>'..table.concat(output, '')..'</'..listtype..'>'
end

return p