No edit summary |
m (Remove deprecated functions) |
||
(30 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
local p = {} |
local p = {} |
||
+ | |||
⚫ | |||
− | + | function p.contains( t, e, c ) |
|
⚫ | |||
− | local parametersCount = 0 |
||
⚫ | |||
− | if args.numerical then |
||
− | + | if v[c] == e[c] then |
|
⚫ | |||
− | while args[i] ~= nil do |
||
− | parametersCount = parametersCount + 1 |
||
⚫ | |||
− | return "'''''Error'''''" |
||
end |
end |
||
end |
end |
||
else |
else |
||
− | for |
+ | for _, v in pairs( t ) do |
⚫ | |||
− | parametersCount = parametersCount + 1 |
||
⚫ | |||
⚫ | |||
end |
end |
||
end |
end |
||
− | return |
+ | return false |
end |
end |
||
⚫ | |||
⚫ | |||
+ | function p.gsub( t, pattern, repl ) |
||
− | local args = p.trimAll( p.getArgs( f ) ) |
||
⚫ | |||
− | if args.index then |
||
− | + | for k, v in pairs( t ) do |
|
− | + | if type( v ) == 'string' then |
|
+ | result[k] = string.gsub( v, pattern, repl ) |
||
⚫ | |||
− | + | else |
|
⚫ | |||
end |
end |
||
− | else |
||
− | local k = 1 |
||
− | repeat |
||
⚫ | |||
⚫ | |||
⚫ | |||
− | k = k + 1 |
||
− | until not args[k] |
||
end |
end |
||
− | return |
+ | return result |
end |
end |
||
+ | -- Do string.gsub to all indexes in a table |
||
− | -- Get parameters of the template and the article from the frame (usually f) |
||
− | function p. |
+ | function p.igsub( t, pattern, repl ) |
− | local |
+ | local result = {} |
⚫ | |||
⚫ | |||
+ | result[string.gsub( k, pattern, repl )] = v |
||
− | -- Add template parameters |
||
⚫ | |||
⚫ | |||
+ | return result |
||
− | args[i] = j |
||
⚫ | |||
+ | |||
+ | |||
+ | function p.key( t, e ) |
||
⚫ | |||
⚫ | |||
+ | return k |
||
end |
end |
||
⚫ | |||
− | -- Add transclusion parameters (parent), overwrite template parameters |
||
+ | return 0 |
||
⚫ | |||
+ | end |
||
⚫ | |||
+ | |||
+ | |||
⚫ | |||
⚫ | |||
+ | for k, v in pairs( t ) do |
||
+ | result[k] = f( v ) |
||
+ | end |
||
+ | return result |
||
+ | end |
||
+ | |||
+ | |||
⚫ | |||
+ | local result = {} |
||
+ | for _, table in ipairs( arg ) do |
||
+ | for k, v in pairs( table ) do |
||
⚫ | |||
end |
end |
||
− | else |
||
− | args = f |
||
end |
end |
||
− | return |
+ | return result |
end |
end |
||
⚫ | |||
⚫ | |||
+ | local result = {} |
||
⚫ | |||
+ | for k, v in pairs( t ) do |
||
⚫ | |||
⚫ | |||
⚫ | |||
+ | result[k] = mw.text.trim( v ) ~= '' and ( toRemove and mw.text.trim( v, toRemove ) or mw.text.trim( v ) ) or keepEmptyParams and '' |
||
⚫ | |||
− | -- Trim |
||
− | if object ~= nil and mw.text.trim( object ) ~= '' then |
||
− | if toRemove then |
||
− | g[index] = mw.text.trim( object, toRemove ) |
||
− | else |
||
− | g[index] = mw.text.trim( object ) |
||
⚫ | |||
⚫ | |||
− | -- Remove empty values ? |
||
− | if mw.text.trim( object ) == '' and not keepEmptyParams then |
||
− | g[index] = nil |
||
⚫ | |||
else |
else |
||
+ | result[k] = v |
||
− | -- Do nothing if the content is not a string |
||
− | g[index] = object |
||
end |
end |
||
end |
end |
||
− | return |
+ | return result |
end |
end |
||
+ | |||
+ | |||
+ | function p.unique( t, c ) |
||
+ | local result = {} |
||
+ | for _, v in ipairs( t ) do |
||
+ | if not p.contains( result, v, c ) then |
||
+ | result[#result + 1] = v |
||
+ | end |
||
+ | end |
||
+ | return result |
||
+ | end |
||
+ | |||
return p |
return p |
Latest revision as of 21:00, 19 March 2021
The above documentation is transcluded from Module:Table/doc. (edit | history)
local p = {}
function p.contains( t, e, c )
if c then
for _, v in pairs( t ) do
if v[c] == e[c] then
return true
end
end
else
for _, v in pairs( t ) do
if v == e then
return true
end
end
end
return false
end
-- Do string.gsub to all values in a table
function p.gsub( t, pattern, repl )
local result = {}
for k, v in pairs( t ) do
if type( v ) == 'string' then
result[k] = string.gsub( v, pattern, repl )
else
result[k] = v
end
end
return result
end
-- Do string.gsub to all indexes in a table
function p.igsub( t, pattern, repl )
local result = {}
for k, v in pairs( t ) do
result[string.gsub( k, pattern, repl )] = v
end
return result
end
function p.key( t, e )
for k, v in pairs( t ) do
if v == e then
return k
end
end
return 0
end
function p.map( t, f )
local result = {}
for k, v in pairs( t ) do
result[k] = f( v )
end
return result
end
function p.merge( ... )
local result = {}
for _, table in ipairs( arg ) do
for k, v in pairs( table ) do
result[k] = v
end
end
return result
end
function p.trim( t, toRemove, keepEmptyParams )
local result = {}
for k, v in pairs( t ) do
if type( v ) == 'string' then
result[k] = mw.text.trim( v ) ~= '' and ( toRemove and mw.text.trim( v, toRemove ) or mw.text.trim( v ) ) or keepEmptyParams and ''
else
result[k] = v
end
end
return result
end
function p.unique( t, c )
local result = {}
for _, v in ipairs( t ) do
if not p.contains( result, v, c ) then
result[#result + 1] = v
end
end
return result
end
return p