Module:TNTTools: Difference between revisions
Appearance
Content deleted Content added
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 |
Revision as of 19:59, 26 October 2019
![]() | This module is rated as ready for general use. It has reached a mature form and is thought to be relatively bug-free and ready for use wherever appropriate. It is ready to mention on help pages and other Wikipedia resources as an option for new users to learn. To reduce server load and bad output, it should be improved by sandbox testing rather than repeated trial-and-error editing. |
Contains functions linked to Module:TNT, which at the same time make calls to multilingual tables, located in Commons, for the creation of modules and multilingual templates.
TNTTools has:
- Question functions: with boolean or numerical indexed return. To be called from other modules or from templates. With:
- Case sensitive option.
- Possibility of more than one translated text value (where each value is separated by "|").
- To put aside write, adding "I18n/" as a prefix and ".tab" extension as a suffix for the table names.
local p = {}
local TNT = require('Module:TNT')
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
function p.GetSTransWithParams (TNTTab, S, ...)
return TNT.format (TNTTabFull(TNTTab), S, {...}) or ''
end
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, '|')
end --TabTransCS
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
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
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
return Idx
end --IdxFromTabTrans
return p