Module:TNTTools: Difference between revisions
From Neodyland Wiki
More actions
No edit summary |
remove unneeded call to "string.len()" |
||
| (6 intermediate revisions by 5 users not shown) | |||
| Line 1: | Line 1: | ||
require("strict") | |||
local p = {} | local p = {} | ||
local checkType = require('libraryUtil').checkType | |||
local TNT = require('Module:TNT') | local TNT = require('Module:TNT') | ||
local SD = require('Module:SimpleDebug') | --local SD = require('Module:SimpleDebug') | ||
function p.TNTTabFull (TNTTab) | function p.TNTTabFull (TNTTab) | ||
if (type(TNTTab) == 'table' and type(TNTTab.args) == 'table') then | |||
-- Probably a Scribunto Frame object | |||
TNTTab = TNTTab.args[1] | |||
if (TNTTab == '') then | |||
TNTTab = nil | |||
end | |||
end | |||
checkType('TNTTabFull', 1, TNTTab, 'string') | |||
if (string.sub(TNTTab, 1, 5)) ~= 'I18n/' then | if (string.sub(TNTTab, 1, 5)) ~= 'I18n/' then | ||
TNTTab = 'I18n/'..TNTTab | TNTTab = 'I18n/'..TNTTab | ||
end | end | ||
if (string.sub(TNTTab, | if (string.sub(TNTTab, -4)) ~= '.tab' then | ||
TNTTab = TNTTab..'.tab' | TNTTab = TNTTab..'.tab' | ||
end | end | ||
| Line 14: | Line 26: | ||
end --TNTTabFull | end --TNTTabFull | ||
function p. | function p.TNTTabCommons (TNTTab) | ||
return | return 'Data:'..p.TNTTabFull(TNTTab) | ||
end | |||
function p.LnkTNTTab (TNTTab) | |||
return '[['..p.TNTTabCommons(TNTTab)..']]' | |||
end | |||
local function I18nStr (TNTTab, S, IsMsg, params) | |||
TNTTab = p.TNTTabFull (TNTTab) | |||
local SEnd = TNT.format(TNTTab, S, unpack(params)) or '' | |||
if SEnd == '' then | |||
SEnd = TNT.formatInLanguage('en',TNTTab, S, unpack(params)) | |||
if IsMsg then | |||
local icon = '[[File:Arbcom ru editing.svg|12px|Not found "'..S..'" in current language. Click here for to edit it.|link='..p.TNTTabCommons(TNTTab)..']]' | |||
SEnd = SEnd..icon | |||
end | |||
end | |||
return SEnd | |||
end --I18nStr | |||
function p.GetMsgP (TNTTab, S, ...) | |||
return I18nStr (TNTTab, S, true, {...}) | |||
end | |||
function p.GetStrP (TNTTab, S, ...) | |||
return I18nStr (TNTTab, S, false, {...}) | |||
end | end | ||
Latest revision as of 07:27, 14 May 2024
This documentation is transcluded from Module:TNTTools/doc.
require("strict")
local p = {}
local checkType = require('libraryUtil').checkType
local TNT = require('Module:TNT')
--local SD = require('Module:SimpleDebug')
function p.TNTTabFull (TNTTab)
if (type(TNTTab) == 'table' and type(TNTTab.args) == 'table') then
-- Probably a Scribunto Frame object
TNTTab = TNTTab.args[1]
if (TNTTab == '') then
TNTTab = nil
end
end
checkType('TNTTabFull', 1, TNTTab, 'string')
if (string.sub(TNTTab, 1, 5)) ~= 'I18n/' then
TNTTab = 'I18n/'..TNTTab
end
if (string.sub(TNTTab, -4)) ~= '.tab' then
TNTTab = TNTTab..'.tab'
end
return TNTTab
end --TNTTabFull
function p.TNTTabCommons (TNTTab)
return 'Data:'..p.TNTTabFull(TNTTab)
end
function p.LnkTNTTab (TNTTab)
return '[['..p.TNTTabCommons(TNTTab)..']]'
end
local function I18nStr (TNTTab, S, IsMsg, params)
TNTTab = p.TNTTabFull (TNTTab)
local SEnd = TNT.format(TNTTab, S, unpack(params)) or ''
if SEnd == '' then
SEnd = TNT.formatInLanguage('en',TNTTab, S, unpack(params))
if IsMsg then
local icon = '[[File:Arbcom ru editing.svg|12px|Not found "'..S..'" in current language. Click here for to edit it.|link='..p.TNTTabCommons(TNTTab)..']]'
SEnd = SEnd..icon
end
end
return SEnd
end --I18nStr
function p.GetMsgP (TNTTab, S, ...)
return I18nStr (TNTTab, S, true, {...})
end
function p.GetStrP (TNTTab, S, ...)
return I18nStr (TNTTab, S, false, {...})
end
function p.TabTransCS (TNTTab, S, CaseSensitive)
CaseSensitive = ((CaseSensitive ~= nil) and (CaseSensitive == true)) or true
local Wds = TNT.format (p.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 = p.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