Module:TNTTools: Difference between revisions
From the Croc Wiki, the Croc encyclopedia
Jump to navigationJump to search
Content added Content deleted
No edit summary |
No edit summary |
||
Line 2: | Line 2: | ||
local TNT = require('Module:TNT') |
local TNT = require('Module:TNT') |
||
local SA = require('Module:SimpleArgs') |
|||
function TNTTabFull (TNTTab) |
function TNTTabFull (TNTTab) |
||
if (string.sub(TNTTab, 1, 5)) ~= 'I18n/' then |
|||
TNTTab = 'I18n/'..TNTTab |
|||
end |
|||
if (string.sub(TNTTab, string.len(TNTTab)-3)) ~= '.tab' then |
|||
TNTTab = TNTTab..'.tab' |
|||
end |
|||
return TNTTab |
|||
end --TNTTabFull |
end --TNTTabFull |
||
function p.GetSTransWithParams (TNTTab, S, ...) |
function p.GetSTransWithParams (TNTTab, S, ...) |
||
return TNT.format (TNTTabFull(TNTTab), S, {...}) or '' |
|||
end |
end |
||
function p.TabTransCS (TNTTab, S, CaseSensitive) |
function p.TabTransCS (TNTTab, S, CaseSensitive) |
||
CaseSensitive = ((CaseSensitive ~= nil) and (CaseSensitive == true)) or true |
|||
local Wds = TNT.format (TNTTabFull(TNTTab), S) |
|||
if not CaseSensitive then |
|||
Wds = string.lower (Wds) |
|||
end |
|||
return mw.text.split (Wds, '|') |
return mw.text.split (Wds, '|') |
||
end --TabTransCS |
end --TabTransCS |
||
function p.TabTransMT (TNTTab, S, MaxTrans) |
function p.TabTransMT (TNTTab, S, MaxTrans) |
||
local FN = TNTTabFull(TNTTab) |
|||
local tab = mw.text.split (TNT.format (FN, S), '|') |
|||
if #tab > MaxTrans then |
|||
error (string.format('Found %s translations for "%s". Search in [[:commons:data:%s]]',#tab,S,FN)) |
|||
-- Translation not required |
|||
end |
|||
return tab |
|||
end --TabTransMT |
end --TabTransMT |
||
function p.SFoundInTNTArr (TNTTab, val, CaseSensitive, S) |
function p.SFoundInTNTArr (TNTTab, val, CaseSensitive, S) |
||
if (S == nil) or (S == '') then |
|||
error('Not arguments trying to find "'..val..'"') --It doesn't require translation, only for degug |
|||
end |
|||
local Arr = p.TabTransCS (TNTTab, S, CaseSensitive) |
|||
if not CaseSensitive then |
|||
val = string.lower (val) |
|||
end |
|||
for I, W in ipairs(Arr) do |
|||
if W == val then |
|||
return true |
|||
⚫ | |||
end |
|||
end |
|||
return false |
|||
end --SFoundInTNTArr |
end --SFoundInTNTArr |
||
function p.IdxFromTabTrans (TNTTab, val, CaseSensitive, ...) |
function p.IdxFromTabTrans (TNTTab, val, CaseSensitive, ...) |
||
local Arr = unpack(arg) |
|||
if Arr == nil then |
|||
error('Not arguments trying to find "'..val..'"') --It doesn't require translation, only for degug |
|||
end |
|||
local Idx = 0 |
|||
for I, W in ipairs(Arr) do |
|||
if p.SFoundInTNTArr (TNTTab, val, CaseSensitive, W) then |
|||
Idx = I |
|||
break |
|||
end |
|||
end |
|||
end |
|||
return Idx |
|||
end |
end --IdxFromTabTrans |
||
function p.Str (frame) |
|||
local args, NArgs = SA.GetArgs (frame) |
|||
local tab = SA.GetStrArgsFromPos (args, NArgs, 3) |
|||
return TNT.format (TNTTabFull(args[1]), args[2], unpack(tab)) |
|||
end --Str |
|||
function p.FoundStrBool (frame) |
|||
local args = SA.GetArgs (frame) |
|||
return p.SFoundInTNTArr (args[1], args[2], SA.GetBoolFromArgs (args,3), args[4]) |
|||
⚫ | |||
function p.FoundStrNum (frame) |
|||
local args = SA.GetArgs (frame) |
|||
if p.SFoundInTNTArr (args[1], args[2], SA.GetBoolFromArgs (args,3), args[4]) then |
|||
return 1 |
|||
else |
|||
return 0 |
|||
end |
|||
end --FoundStrNum |
|||
function p.FoundIdx (frame) |
|||
local args, NArgs = SA.GetArgs (frame) |
|||
local tab = SA.GetStrArgsFromPos (args, NArgs, 4) |
|||
return p.IdxFromTabTrans (args[1], args[2], SA.GetBoolFromArgs (args,3), tab) |
|||
end --FoundIdx |
|||
return p |
return p |