<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://wiki.noethoumy.fr/index.php?action=history&amp;feed=atom&amp;title=Module%3AUtilitaire</id>
	<title>Module:Utilitaire - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.noethoumy.fr/index.php?action=history&amp;feed=atom&amp;title=Module%3AUtilitaire"/>
	<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Module:Utilitaire&amp;action=history"/>
	<updated>2026-04-27T19:24:07Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://wiki.noethoumy.fr/index.php?title=Module:Utilitaire&amp;diff=350&amp;oldid=prev</id>
		<title>Jaggerwock : Page créée avec «  local utils = {}  --  Nombre d&#039;élément dans un dictionnaire  --  function utils.tablelength(T)   local count = 0   for _ in pairs(T) do count = count + 1 end   return count end   --  Nouveau tableau sans le premier élément  --  function utils.tail(list)     return { select(2, unpack(list)) } end   function utils.tableConcat(t1,t2)     for i=1,#t2 do         t1[#t1+1] = t2[i]     end     return t1 end  -- trouve l’index d’une valeur si présente d... »</title>
		<link rel="alternate" type="text/html" href="https://wiki.noethoumy.fr/index.php?title=Module:Utilitaire&amp;diff=350&amp;oldid=prev"/>
		<updated>2024-09-20T14:26:11Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec «  local utils = {}  --&lt;a href=&quot;/index.php?title=Nombre_d%27%C3%A9l%C3%A9ment_dans_un_dictionnaire_--&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Nombre d&amp;#039;élément dans un dictionnaire -- (page inexistante)&quot;&gt;Nombre d&amp;#039;élément dans un dictionnaire  --&lt;/a&gt;  function utils.tablelength(T)   local count = 0   for _ in pairs(T) do count = count + 1 end   return count end   --&lt;a href=&quot;/index.php?title=Nouveau_tableau_sans_le_premier_%C3%A9l%C3%A9ment_--&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Nouveau tableau sans le premier élément -- (page inexistante)&quot;&gt;Nouveau tableau sans le premier élément  --&lt;/a&gt;  function utils.tail(list)     return { select(2, unpack(list)) } end   function utils.tableConcat(t1,t2)     for i=1,#t2 do         t1[#t1+1] = t2[i]     end     return t1 end  -- trouve l’index d’une valeur si présente d... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
local utils = {}&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
&lt;br /&gt;
Nombre d&amp;#039;élément dans un dictionnaire&lt;br /&gt;
&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
function utils.tablelength(T)&lt;br /&gt;
  local count = 0&lt;br /&gt;
  for _ in pairs(T) do count = count + 1 end&lt;br /&gt;
  return count&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
&lt;br /&gt;
Nouveau tableau sans le premier élément&lt;br /&gt;
&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
function utils.tail(list)&lt;br /&gt;
    return { select(2, unpack(list)) }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function utils.tableConcat(t1,t2)&lt;br /&gt;
    for i=1,#t2 do&lt;br /&gt;
        t1[#t1+1] = t2[i]&lt;br /&gt;
    end&lt;br /&gt;
    return t1&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- trouve l’index d’une valeur si présente dans la table (index numérique)&lt;br /&gt;
function utils.table_ifind(t, v)&lt;br /&gt;
	for i, val in ipairs(t) do&lt;br /&gt;
		if v == val then&lt;br /&gt;
			return i&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- trouve l’index d’une valeur si présente dans la table, index numérique ou chaine&lt;br /&gt;
&lt;br /&gt;
function utils.table_find(t, v)&lt;br /&gt;
	for i, val in pairs(t) do&lt;br /&gt;
		if v == val then&lt;br /&gt;
			return i&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
&lt;br /&gt;
Une classe destinée à servir d&amp;#039;ensemble pour tester rapidement l&amp;#039;appartenance d&amp;#039;un élément à une liste ou un ensemble&lt;br /&gt;
&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
local Set = {} -- the table representing the class, which will double as the metatable for the instances&lt;br /&gt;
Set.__index = Set -- failed table lookups on the instances should fallback to the class table, to get methods&lt;br /&gt;
&lt;br /&gt;
function Set:new(init, o)&lt;br /&gt;
    local obj = o or {} &lt;br /&gt;
    setmetatable(obj, self)&lt;br /&gt;
    &lt;br /&gt;
    obj.value = init&lt;br /&gt;
    obj.prop_set = {}&lt;br /&gt;
    &lt;br /&gt;
    for _, val in pairs(init) do&lt;br /&gt;
    	obj.prop_set[val] = true&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return obj&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Set:is_in(key)&lt;br /&gt;
    return self.prop_set[key] ~= nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
utils.Set = Set&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- table.filter({&amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot;, &amp;quot;d&amp;quot;}, function(o, k, i) return o &amp;gt;= &amp;quot;c&amp;quot; end)  --&amp;gt; {&amp;quot;c&amp;quot;,&amp;quot;d&amp;quot;}&lt;br /&gt;
--&lt;br /&gt;
-- @FGRibreau - Francois-Guillaume Ribreau&lt;br /&gt;
-- @Redsmin - A full-feature client for Redis http://redsmin.com&lt;br /&gt;
&lt;br /&gt;
-- https://gist.github.com/fnchooft/77779d80d6668e8eeb3043dad215575a&lt;br /&gt;
&lt;br /&gt;
local function filter (t, filterIter)&lt;br /&gt;
  local out = {}&lt;br /&gt;
&lt;br /&gt;
  for k, v in pairs(t) do&lt;br /&gt;
    if filterIter(v, k, t) then out[k] = v end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
utils.filter = filter &lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	Programmation fonctionnelle, application d&amp;#039;une fonction sur chaque élément d&amp;#039;un tableau&lt;br /&gt;
	map(f,{a, b, c, ...}) = {f(a), f(b), f(c), ...} &lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function map(func, array)&lt;br /&gt;
  local new_array = {}&lt;br /&gt;
  for i,v in ipairs(array) do&lt;br /&gt;
    new_array[i] = func(v)&lt;br /&gt;
  end&lt;br /&gt;
  return new_array&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
utils.map = map&lt;br /&gt;
&lt;br /&gt;
function utils.formatTableWithLastSep(vector, sep, lastsep)&lt;br /&gt;
	local descr = table.concat(vector, sep, 1, #vector-1)&lt;br /&gt;
	if #vector &amp;gt; 1 then&lt;br /&gt;
		descr = descr .. lastsep .. vector[#vector]&lt;br /&gt;
	else &lt;br /&gt;
		descr = vector[1]&lt;br /&gt;
	end&lt;br /&gt;
	return descr&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function dump_to_console(val, indent)&lt;br /&gt;
	indent = indent or &amp;quot;&amp;quot;&lt;br /&gt;
	if type(val) == &amp;quot;table&amp;quot; then&lt;br /&gt;
		for a, b in pairs(val) do&lt;br /&gt;
			mw.log(indent .. a .. &amp;quot;=&amp;gt;&amp;quot;)&lt;br /&gt;
			dump_to_console(b, indent .. &amp;quot;   &amp;quot;) &lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		mw.log(indent .. tostring(val))&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
utils.dump_to_console = dump_to_console&lt;br /&gt;
utils.dump = dump_to_console&lt;br /&gt;
&lt;br /&gt;
-- some functions useful in lua&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function splitStr(val) -- transforme en table les chaînes venant du Wikitexte qui utilisent des virgules de séparatin&lt;br /&gt;
	if type(val) == &amp;#039;string&amp;#039; then&lt;br /&gt;
		val = mw.text.split(val, &amp;quot;,&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	return val&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
utils.splitStr = splitStr&lt;br /&gt;
&lt;br /&gt;
-- utility : stack manipulation functions&lt;br /&gt;
-- Console tests : &lt;br /&gt;
-- plop = {} ; p.append(plop, &amp;quot;a&amp;quot;) ; p.append(plop, &amp;quot;a&amp;quot;) ; p.push(plop, &amp;quot;b&amp;quot;)  ; p.append(plop, &amp;quot;c&amp;quot;) ; p.push(plop, &amp;quot;a&amp;quot;) ; mw.log(p. dump_to_console(plop)) ; p.shove_off(plop) ; p.pop(plop) ; mw.log(plop)&lt;br /&gt;
&lt;br /&gt;
local function pop(list)&lt;br /&gt;
	local ind=1&lt;br /&gt;
	if list[0] then&lt;br /&gt;
		ind = 0&lt;br /&gt;
	end&lt;br /&gt;
	local elem = list[ind]&lt;br /&gt;
	table.remove(list, ind)&lt;br /&gt;
	return elem, list&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
utils.pop = pop&lt;br /&gt;
&lt;br /&gt;
local function push(list, elem)&lt;br /&gt;
	if elem[0] then&lt;br /&gt;
		table.insert(list, 0, elem)&lt;br /&gt;
	else&lt;br /&gt;
		table.insert(list, 1, elem)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
utils.push = push&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
utils.append = function(list, elem)&lt;br /&gt;
	table.insert(list, #list+1, elem)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
utils.shove_off = function(list, elem)&lt;br /&gt;
	table.remove(list, elem, #list+1)&lt;br /&gt;
end&lt;br /&gt;
utils.remove_last = utils.shove_off&lt;br /&gt;
&lt;br /&gt;
return utils&lt;/div&gt;</summary>
		<author><name>Jaggerwock</name></author>
	</entry>
</feed>