Jump to content
Toggle menu
  • 8 articles
  • 75 files
  • 7 users
  • 37.8K edits
Neodyland Wiki
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Module:TNTTools: Difference between revisions

From Neodyland Wiki
No edit summary
remove unneeded call to "string.len()"
 
(8 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 SA = require('Module:SimpleArgs')
--local SD = require('Module:SimpleDebug')


function TNTTabFull (TNTTab)
function p.TNTTabFull (TNTTab)
    if (string.sub(TNTTab, 1, 5)) ~= 'I18n/' then
if (type(TNTTab) == 'table' and type(TNTTab.args) == 'table') then
        TNTTab = 'I18n/'..TNTTab
-- Probably a Scribunto Frame object
    end  
TNTTab = TNTTab.args[1]
    if (string.sub(TNTTab, string.len(TNTTab)-3)) ~= '.tab' then
if (TNTTab == '') then
        TNTTab = TNTTab..'.tab'
TNTTab = nil
    end  
end
    return TNTTab
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
end --TNTTabFull


function p.GetSTransWithParams (TNTTab, S, ...)
function p.TNTTabCommons (TNTTab)
    return TNT.format (TNTTabFull(TNTTab), S, {...}) or ''
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


function p.TabTransCS (TNTTab, S, CaseSensitive)
function p.TabTransCS (TNTTab, S, CaseSensitive)
    CaseSensitive = ((CaseSensitive ~= nil) and (CaseSensitive == true)) or true
CaseSensitive = ((CaseSensitive ~= nil) and (CaseSensitive == true)) or true
    local Wds = TNT.format (TNTTabFull(TNTTab), S)
local Wds = TNT.format (p.TNTTabFull(TNTTab), S)
    if not CaseSensitive then
if not CaseSensitive then
        Wds = string.lower (Wds)
Wds = string.lower (Wds)
    end  
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 FN = p.TNTTabFull(TNTTab)
    local tab = mw.text.split (TNT.format (FN, S), '|')
local tab = mw.text.split (TNT.format (FN, S), '|')
    if #tab > MaxTrans then
if #tab > MaxTrans then
        error (string.format('Found %s translations for "%s". Search in [[:commons:data:%s]]',#tab,S,FN))
error (string.format('Found %s translations for "%s". Search in [[:commons:data:%s]]',#tab,S,FN))  
                            -- Translation not required
-- Translation not required
    end
end
    return tab
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
if (S == nil) or (S == '') then
        error('Not arguments trying to find "'..val..'"') --It doesn't require translation, only for degug
error('Not arguments trying to find "'..val..'"') --It doesn't require translation, only for degug
    end  
end
    local Arr = p.TabTransCS (TNTTab, S, CaseSensitive)
local Arr = p.TabTransCS (TNTTab, S, CaseSensitive)
    if not CaseSensitive then
if not CaseSensitive then
        val = string.lower (val)
val = string.lower (val)
    end  
end
    for I, W in ipairs(Arr) do
for I, W in ipairs(Arr) do
        if W == val then
if W == val then
            return true
return true
        end  
end
    end  
end
    return false
return false
end --SFoundInTNTArr
end --SFoundInTNTArr


function p.IdxFromTabTrans (TNTTab, val, CaseSensitive, ...)
function p.IdxFromTabTrans (TNTTab, val, CaseSensitive, ...)
    local Arr = unpack(arg)
local Arr = unpack(arg)
    if Arr == nil then
if Arr == nil then
        error('Not arguments trying to find "'..val..'"') --It doesn't require translation, only for degug
error('Not arguments trying to find "'..val..'"') --It doesn't require translation, only for degug
    end  
end
    local Idx = 0
local Idx = 0
    for I, W in ipairs(Arr) do
for I, W in ipairs(Arr) do
        if p.SFoundInTNTArr (TNTTab, val, CaseSensitive, W) then
if p.SFoundInTNTArr (TNTTab, val, CaseSensitive, W) then
            Idx = I
Idx = I
            break
break
        end  
end
    end  
end
    return Idx
return Idx
end   --IdxFromTabTrans
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])
end
   
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

Latest revision as of 07:27, 14 May 2024

Module documentation[ create · purge ]
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
Cookies help us deliver our services. By using our services, you agree to our use of cookies.