Mòdul:ArgsTNT

De Viquipèdia
Salta a la navegació Salta a la cerca
Icona de documentació de mòdul Documentació del mòdul [ mostra ] [ modifica el codi ] [ mostra l'historial ] [ refresca ]

Mòdul ArgsTNT (codi · ús · discussió · tests · casos prova | subpàgines · enllaços)

A continuació es mostra la documentació transclosa de la subpàgina /ús. [salta a la caixa de codi]


Dissenyat per a crear plantilles multilingües. Amb funcions que utilitzen Mòdul:TNTTools i Mòdul:SimpleArgs.

Funcions del frame[modifica]

Les funcions de nom amb sufix P prenen el nom de la taula del nom de la plantilla. Altrament heu d'utilitzar les funcions amb sufix T que precisa el TableN o nom de la taula.

Valor d'un element de la taula[modifica]

On Id és l'identificador de l'element en la taula.

  • {{#invoke:ArgsTNT|StrP|Id}}
  • {{#invoke:ArgsTNT|StrT|TableN|Id}}

Creant un enllaç a un article. Si Always és true crearà l'enllaç encara que no existeixi l'article.

  • {{#invoke:ArgsTNT|StrLnkP|Id|Always}}
  • {{#invoke:ArgsTNT|StrLnkT|TableN|Id|Always}}

Existència de paràmetres[modifica]

On Id1, etc. són un nombre variable d'identificadors de paràmetres. Retorna un 1 si en troba algun Any o si hi són tots All.

  • {{#invoke:ArgsTNT|ExistsAnyP|Id1|Id2...}}
  • {{#invoke:ArgsTNT|ExistsAnyT|TableN|Id1|Id2...}}
  • {{#invoke:ArgsTNT|ExistsAllP|Id1|Id2...}}
  • {{#invoke:ArgsTNT|ExistsAllT|TableN|Id1|Id2...}}

Valors dels paràmetres[modifica]

  • Quan la funció té una R de prefix és que els valors són requerits, en cas de ser omesos es presentarà un missatge d'error.
  • Val correspon a un valor o assignació mitjançant , on n és el número del paràmetre.
  • Id és l'identificador del paràmetre en la taula. Els valors que pren l'identificador de la taula poden ser un o més d'un (llavors separats per '|').
  • Default és el valor que s'assignarà si està definit.
  • OKEmpty indica que s'accepta sense valor.
  • La marca * indica que el paràmetre és opcional.

Cadenes[modifica]

  • {{#invoke:ArgsTNT|Str_Par|Val|Default*}}
  • {{#invoke:ArgsTNT|Str_ParP|Id|Default*}}
  • {{#invoke:ArgsTNT|Str_ParT|TableN|Id|Default*}}
  • {{#invoke:ArgsTNT|RStr_Par|Val|Default*|OKEmpty*}}
  • {{#invoke:ArgsTNT|RStr_ParP|Id|Default*|OKEmpty*}}
  • {{#invoke:ArgsTNT|RStr_ParT|TableN|Id|OKEmpty*}}
Comprovació de cadenes[modifica]
  • PossibleValsId és l'identificador en la taula dels possibles valors separats per '|'.
  • CaseSens si distingint majúscules i minúscules.
  • {{#invoke:ArgsTNT|StrChkTab_Par_P|Val|PossibleValsId|CaseSens*|Default*}}
  • {{#invoke:ArgsTNT|StrChkTab_Par_T|TableN|Val|PossibleValsId|CaseSens*|Default*}}
  • {{#invoke:ArgsTNT|StrChkTab_ParP|Id|PossibleValsId|CaseSens*|Default*}}
  • {{#invoke:ArgsTNT|StrChkTab_ParT|TableN|Id|PossibleValsId|CaseSens*|Default*}}
  • {{#invoke:ArgsTNT|RStrChkTab_Par_P|Val|PossibleValsId|CaseSens*|OKEmpty*}}
  • {{#invoke:ArgsTNT|RStrChkTab_Par_T|TableN|Val|PossibleValsId|CaseSens*|OKEmpty*}}
  • {{#invoke:ArgsTNT|RStrChkTab_ParP|Id|PossibleValsId|CaseSens*|OKEmpty*}}
  • {{#invoke:ArgsTNT|RStrChkTab_ParT|TableN|Id|PossibleValsId|CaseSens*|OKEmpty*}}

Números[modifica]

  • LimInf i LimSup indiquen els límits mínim i màxim pel valor del paràmetre.

De qualsevol tipus:

  • {{#invoke:ArgsTNT|Num_Par|Val|Default*|LimInf*|LimSup*}}
  • {{#invoke:ArgsTNT|Num_ParP|Id|Default*|LimInf*|LimSup*}}
  • {{#invoke:ArgsTNT|Num_ParT|TableN|Id|Default*|LimInf*|LimSup*}}
  • {{#invoke:ArgsTNT|RNum_Par|Val|OKEmpty*|LimInf*|LimSup*}}
  • {{#invoke:ArgsTNT|RNum_ParP|Id|OKEmpty*|LimInf*|LimSup*}}
  • {{#invoke:ArgsTNT|RNum_ParT|TableN|Id|OKEmpty*|LimInf*|LimSup*}}

Enters:

  • {{#invoke:ArgsTNT|Int_Par|Val|Default*|LimInf*|LimSup*}}
  • {{#invoke:ArgsTNT|Int_ParP|Id|Default*|LimInf*|LimSup*}}
  • {{#invoke:ArgsTNT|Int_ParT|TableN|Id|Default*|LimInf*|LimSup*}}
  • {{#invoke:ArgsTNT|RInt_Par|Val|OKEmpty*|LimInf*|LimSup*}}
  • {{#invoke:ArgsTNT|RInt_ParP|Id|OKEmpty*|LimInf*|LimSup*}}
  • {{#invoke:ArgsTNT|RInt_ParT|TableN|Id|OKEmpty*|LimInf*|LimSup*}}

Booleans[modifica]

Retornen un 1 si és veritat o un 0 si és fals, amb els valors:

  • Veritat: sí|s|yes|y|true|veritat|t|1
  • Fals: no|n|false|fals|f|0

Funcions:

  • {{#invoke:ArgsTNT|Bool_Par|Val|Default*}}
  • {{#invoke:ArgsTNT|Bool_ParP|Id|Default*}}
  • {{#invoke:ArgsTNT|Bool_ParT|TableN|Id|Default*}}
  • {{#invoke:ArgsTNT|RBool_Par|Val|OKEmpty*}}
  • {{#invoke:ArgsTNT|RBool_ParP|Id|OKEmpty*}}
  • {{#invoke:ArgsTNT|RBool_ParT|TableN|Id|OKEmpty*}}

Comprovant una cadena[modifica]

Booleà[modifica]

  • Wd és la paraula o frase a buscar. Si la troba retorna un 1, sinó un 0.
  • CaseSens si distingint majúscules i minúscules.
  • {{#invoke:ArgsTNT|FoundStrBoolP|Wd|CaseSens|Id}}
  • {{#invoke:ArgsTNT|FoundStrBoolT|TableN|Wd|CaseSens|Id}}

Índex[modifica]

Retorna l'índex. Si ha trobat Wd en Id1 retorna un 1, si l'ha trobat a Id2 retorna un 2... Si no troba Wd retorna un 0.

  • {{#invoke:ArgsTNT|StrIdxChkTabP|Wd|CaseSens|Id1|Id2...}}
  • {{#invoke:ArgsTNT|StrIdxChkTabT|TableN|Wd|CaseSens|Id1|Id2...}}

Presentant missatge d'error si no troba Wd:

  • {{#invoke:ArgsTNT|StrIdxChkTabEP|Wd|CaseSens|Id1|Id2...}}
  • {{#invoke:ArgsTNT|StrIdxChkTabET|TableN|Wd|CaseSens|Id1|Id2...}}

Documentació de la plantilla[modifica]

Funcions per a utilitzar en la pàgina de la documentació de la plantilla.

Crea un enllaç a la taula (a commons):

  • {{#invoke:ArgsTNT|LnkTNTTabP}}
  • {{#invoke:ArgsTNT|LnkTNTTabT|TableN}}

Mostra la cadena d'un element de la taula, quan aquesta pren el nom de la plantilla (altrament s'ha d'utilitzar StrT).

  • {{#invoke:ArgsTNT|StrNoEnd|Id}}

Exemples[modifica]

Taules TNT amb el mateix nom que la plantilla[modifica]

Taula TNT comuna pels exemples[modifica]

Ús indirecte de taules[modifica]

local p = {}

local TNT = require('Module:TNT')
local TNTT = require('Module:TNTTools')
local SA = require('Module:SimpleArgs')
local SD = require('Module:SimpleDebug')
local yesno = require('Module:YesnoTNT')

local RS_SNotFoundInTab = 'SNotFoundInTab'
local function I18nStr (S, ...)
	return TNTT.GetMsgP ('SimpleArgs', S, {...})
end

function p.ParentTNTTab(frame)
	local S = frame:getParent():getTitle()
	return string.sub(S, string.find(S,':')+1)
end	

function p.TNTTabP (frame)
	local doc = p.ParentTNTTab(frame)
	doc = string.sub (doc, 1, #doc - doc:reverse():find("/"))
	return TNTT.TNTTabFull(doc)
end

function p.LnkTNTTabP (frame)
	return TNTT.LnkTNTTab (p.TNTTabP(frame))
end

function p.LnkTNTTabT (frame)
	local args = SA.GetArgs (frame)
	local TNTTab = SA.RStr_Par (args, 1)
	return TNTT.LnkTNTTab(TNTTab)
end

function GetTNTTab (frame, args, Inc)
	if SA.Error.yes then return end
	if Inc == 1 then
		return SA.RStr_Par (args, Inc)
	else
		return p.ParentTNTTab(frame)
	end
end --GetTNTTab

function Str0 (frame, Inc)
	local args, NArgs = SA.GetArgs (frame, true, true)
	local tab = SA.StrTab_NPar (args, NArgs, 2+Inc, nil, nil, 0)
	local TNTTab = GetTNTTab (frame, args, Inc)
	local S = ''
	if not SA.Error.yes then
		S = TNTT.GetMsgP (TNTTab, args[1+Inc], unpack(tab))
	end	
	if SA.Error.yes then 
		return SA.MsgError()
	else
		return S
	end	
end --Str0

function p.StrNoEnd (frame)
	local args = SA.GetArgs (frame, true, true)
	local S = SA.RStr_Par (args, 1)
	return TNT.format (p.TNTTabP(frame), S)
end --StrNoEnd

function p.StrP (frame)
	return Str0 (frame, 0)
end

function p.StrT (frame)
	return Str0 (frame, 1)
end

function StrLnk0 (frame, Inc)
	local args, NArgs = SA.GetArgs (frame, true, true)
	local TNTTab = GetTNTTab (frame, args, Inc)
	local S = SA.RStr_Par (args, 1+Inc)
	if not SA.Error.yes then
		S = TNT.format (TNTT.TNTTabFull(TNTTab), S)
	end	
	if SA.Error.yes then 
		return SA.MsgError()
	else
		local Always = SA.Bool_Par (args, 2+Inc)
		local titleObj = mw.title.new (S)
		if (titleObj and titleObj.exists) or Always then
			S = '[['..S..']]'
		end
		return S
	end	
end --StrLnk0

function p.StrLnkP (frame)
	return StrLnk0 (frame, 0)
end

function p.StrLnkT (frame)
	return StrLnk0 (frame, 1)
end

function ExistsAny (frame, Inc)
	local args, NArgs = SA.GetArgs (frame)
	local TNTTab = GetTNTTab (frame, args, Inc)
	local tab = SA.StrTab_NPar (args, NArgs, 1+Inc, 1)
	local pargs = frame:getParent().args
	for v, w in ipairs(tab) do
		for j, k in pairs(pargs) do
			local num = tonumber(w)
			if not num then
				local tab2 = TNTT.TabTransCS (TNTTab, w)
				for l, m in ipairs(tab2) do
					if j == m then
						return 1
					end
				end
			else	
				if j == num then
					return 1
				end	
			end	
		end
	end
	return 0
end --ExistsAny	

function p.ExistsAnyP (frame)
	return ExistsAny (frame, 0) 
end

function p.ExistsAnyT (frame)
	return ExistsAny (frame, 1) 
end

function ExistsAll (frame, Inc)
	local args, NArgs = SA.GetArgs (frame)
	local TNTTab = GetTNTTab (frame, args, Inc)
	local tab = SA.StrTab_NPar (args, NArgs, 1+Inc, 1)
	local pargs = frame:getParent().args
	for v, w in ipairs(tab) do
		local found = false
		for j, k in pairs(pargs) do
			local num = tonumber(w)
			if not num then
				local tab2 = TNTT.TabTransCS (TNTTab, w)
				for l, m in ipairs(tab2) do
					if j == m then
						found = true
						break
					end
				end
			else	
				if j == num then
					found = true
					break
				end	
			end	
			if found then
				break
			end	
		end
		if not found then
			return 0
		end	
	end
	return 1
end --ExistsAll	

function p.ExistsAllP (frame)
	return ExistsAll (frame, 0) 
end

function p.ExistsAllT (frame)
	return ExistsAll (frame, 1) 
end

----

function Str_Par00 (frame)
	local args = SA.GetArgs (frame, true, true)
	local S = SA.Str_Par (args, 1)
	return args, S
end --Str_Par00

function Str_Par01 (frame, Inc)
	local args, NArgs = SA.GetArgs (frame, true, true)
	local TNTTab = GetTNTTab (frame, args, Inc)
	local S = SA.RStr_Par (args, 1+Inc)
	local tab = TNTT.TabTransCS (TNTTab, S)
	return args, tab
end --Str_Par01

function Str_ParArgs (frame, tab) 
	local pargs = frame:getParent().args
	for k, v in pairs(pargs) do
		for i, w in ipairs(tab) do
			if w == k then
				return mw.text.trim (v), k
			end	
		end
		if found then
			break
		end	
	end
	return nil, tab
end --Str_ParArgs

function p.Str_Par (frame)
	local args, S = Str_Par00 (frame)
	if (S == nil) or (S == '') then
		local Default = SA.Str_Par (args, 2, '')
		S = Default
	end
	return S
end --Str_Par

function Str_Par0 (frame, Inc)
	local args, tab = Str_Par01 (frame, Inc)
	if SA.Error.yes then 
		return SA.MsgError() 
	else
		local S = Str_ParArgs (frame, tab)
		if (S == nil) or (S == '') then
			local Default = SA.Str_Par (args, 2+Inc, '')
			S = Default
		end
		return S
	end
end --Str_Par0	

function p.Str_ParP (frame)
	return Str_Par0 (frame, 0) 
end

function p.Str_ParT (frame)
	return Str_Par0 (frame, 1) 
end

function p.RStr_Par (frame)
	local args, S = Str_Par00 (frame)
	local OKEmpty = SA.Bool_Par (args, 2, nil)
	if (S == nil) or ((S == '') and ((OKEmpty == nil) or (not OKEmpty))) then
		SA.NotAssignedValue (k)
		return SA.MsgError() 
	else
		return S
	end
end --RStr_Par

function RStr_Par0 (frame, Inc)
	local args, tab = Str_Par01 (frame, Inc)
	if SA.Error.yes then 
		return SA.MsgError() 
	else
		local S, k = Str_ParArgs (frame, tab) 
		local OKEmpty = SA.Bool_Par (args, 2+Inc, nil)
		if (S == nil) or ((S == '') and ((OKEmpty == nil) or (not OKEmpty))) then
			SA.NotAssignedValue (k)
			return SA.MsgError() 
		else
			return S
		end
	end	
end --RStr_Par0

function p.RStr_ParP (frame)
	return RStr_Par0 (frame, 0) 
end

function p.RStr_ParT (frame)
	return RStr_Par0 (frame, 1) 
end

----

function GetTab (args, TNTTab, Pos) 
	local S = SA.RStr_Par (args, Pos)
	return TNTT.TabTransCS (TNTTab, S)
end

function StrChkTab_ (frame, Inc)
	local S, args = SStr_Par00 (frame)
	local TNTTab = GetTNTTab (frame, args, Inc)
	local tab2 = GetTab (args, TNTTab, 2+Inc)
	local CaseSens = SA.Bool_Par (args, 3+Inc)
	return args, S, tab2, CaseSens
end	--StrChkTab_

function StrChkTab (frame, Inc)
	local args = SA.GetArgs (frame, true, true)
	local TNTTab = GetTNTTab (frame, args, Inc)
	local tab1 = GetTab (args, TNTTab, 1+Inc)
	local tab2 = GetTab (args, TNTTab, 2+Inc)
	local CaseSens = SA.Bool_Par (args, 3+Inc)
	return args, tab1, tab2, CaseSens
end	--StrChkTab

function StrChkTabEnd (k, S, tab2, CaseSens, Default)
	S = SA.StrChkTab_Par0 (k, S, tab2, CaseSens, Default)
	if SA.Error.yes then 
		return SA.MsgError()
	else
		return S
	end	
end --StrChkTabEnd

function StrChkTabPreEnd (args, k, S, tab2, CaseSens, Inc)
	local Default = SA.Str_Par (args, 4+Inc, '')
	if (S == nil) or (S == '') then
		return Default
	else
		return StrChkTabEnd (k, S, tab2, CaseSens, Default)
	end
end --StrChkTabPreEnd	

function RStrChkTabPreEnd (args, k, S, tab2, CaseSens, Inc)
	local OKEmpty = SA.Bool_Par (args, 4+Inc, nil)
	if (S == nil) or ((S == '') and ((OKEmpty == nil) or (not OKEmpty))) then
		SA.NotAssignedValue (1)
		return SA.MsgError() 
	else
		return StrChkTabEnd (k, S, tab2, CaseSens)
	end
end	--RStrChkTabPreEnd

function StrChkTab_Par_0 (frame, Inc) 
	local args, S, tab2, CaseSens = StrChkTab_ (frame, Inc)
	if SA.Error.yes then 
		return SA.MsgError() 
	else
		return StrChkTabPreEnd (args, 1, S, tab2, CaseSens, Inc)
	end
end --StrChkTab_Par_0

function RStrChkTab_Par_0 (frame, Inc) 
	local args, S, tab2, CaseSens = StrChkTab_ (frame, Inc)
	if SA.Error.yes then 
		return SA.MsgError() 
	else
		return RStrChkTabPreEnd (args, 1, S, tab2, CaseSens, Inc)
	end	
end --RStrChkTab_Par_0

function p.StrChkTab_Par_P (frame)
	return StrChkTab_Par_0 (frame, 0) 
end

function p.StrChkTab_Par_T (frame)
	return StrChkTab_Par_0 (frame, 1) 
end

function p.RStrChkTab_Par_P (frame)
	return RStrChkTab_Par_0 (frame, 0) 
end

function p.RStrChkTab_Par_T (frame)
	return RStrChkTab_Par_0 (frame, 1) 
end

function StrChkTab_Par0 (frame, Inc) 
	local args, tab1, tab2, CaseSens = StrChkTab (frame, Inc)
	if SA.Error.yes then 
		return SA.MsgError() 
	else
		local S, k = Str_ParArgs (frame, tab1)
		return StrChkTabPreEnd (args, k, S, tab2, CaseSens, Inc)
	end
end --StrChkTab_Par0

function RStrChkTab_Par0 (frame, Inc) 
	local args, tab1, tab2, CaseSens = StrChkTab (frame, Inc)
	if SA.Error.yes then 
		return SA.MsgError() 
	else
		local S, k = Str_ParArgs (frame, tab1) 
		return RStrChkTabPreEnd (args, k, S, tab2, CaseSens, Inc)
	end	
end --RStrChkTab_Par0

function p.StrChkTab_ParP (frame)
	return StrChkTab_Par0 (frame, 0) 
end

function p.StrChkTab_ParT (frame)
	return StrChkTab_Par0 (frame, 1) 
end

function p.RStrChkTab_ParP (frame)
	return RStrChkTab_Par0 (frame, 0) 
end

function p.RStrChkTab_ParT (frame)
	return RStrChkTab_Par0 (frame, 1) 
end

----

function CheckSIsNum (S, args, k, Inc)
	if S == nil then
		return S, false
	else
		LimInf = SA.Num_Par (args, 3+Inc)
		LimSup = SA.Num_Par (args, 4+Inc)
		SA.CheckSIsNum (S, {k}, LimInf, LimSup)
		if SA.Error.yes then 
			return SA.MsgError(), false, nil 
		else	
			return tonumber(S), true, k
		end	
	end
end --CheckSIsNum

function WithNum (args, N, k, Inc)
	if (N == nil) or (N == '') then
		local Default = SA.Num_Par (args, 2+Inc, nil)
		if Default ~= nil then
			return Default, true, k
		else
			return nil, false, k
		end
	else	
		return CheckSIsNum (N, args, k, Inc)
	end
end --WithNum

function Num_ParX (frame)
	local args, N = Str_Par00 (frame)
	local Valid, k
	N, Valid, k = WithNum (args, N, 1, 0)
	return N, Valid, k
end

function p.Num_Par (frame)
	local N, Valid, k = Num_ParX (frame) 
	return N
end 

function Num_Par0 (frame, Inc)
	local args, tab = Str_Par01 (frame, Inc)
	if SA.Error.yes then 
		return SA.MsgError(), false, nil 
	else
		local N, k = Str_ParArgs (frame, tab)
		return WithNum (args, N, k, Inc)
	end
end --Num_Par0	

function p.Num_ParP (frame)
	local N, Valid, k = Num_Par0 (frame, 0) 
	return N
end

function p.Num_ParT (frame)
	local N, Valid, k = Num_Par0 (frame, 1) 
	return N
end

function WithRNum  (args, N, k, Inc)
	local OKEmpty = SA.Bool_Par (args, 2+Inc, nil)
	if (N == nil) or ((N == '') and ((OKEmpty == nil) or (not OKEmpty))) then
		SA.NotAssignedValue (k)
		return SA.MsgError()
	else	
		return CheckSIsNum (N, args, k, Inc)
	end
end	--WithRNum

function RNum_ParX (frame)
	local args, N = Str_Par00 (frame)
	return WithRNum (args, N, 1, 0)
end

function p.RNum_Par (frame)
	local N, Valid, k = RNum_ParX (frame) 
	return N
end --RNum_Par

function RNum_Par0 (frame, Inc)
	local args, tab = Str_Par01 (frame, Inc)
	if SA.Error.yes then 
		return SA.MsgError(), false, nil 
	else
		local N, k = Str_ParArgs (frame, tab)
		return WithRNum (args, N, k, Inc)
	end
end --RNum_Par0	

function p.RNum_ParP (frame)
	local N, Valid, k = RNum_Par0 (frame, 0) 
	return N
end

function p.RNum_ParT (frame)
	local N, Valid, k = RNum_Par0 (frame, 1) 
	return N
end

function WithInt (N, Valid, k)
	if Valid then
		SA.CheckNumIsInt (N, {k})
		if SA.Error.yes then 
			return SA.MsgError()
		else	
			return N
		end	
	else
		return N
	end	
end --WithInt	

function p.Int_Par (frame)
	local N, Valid, k = Num_ParX (frame) 
	return WithInt (N, Valid, k)
end

function Int_Par0 (frame, Inc)
	local N, Valid, k = Num_Par0 (frame, Inc)
	return WithInt (N, Valid, k)
end	

function p.Int_ParP (frame)
	return Int_Par0 (frame, 0) 
end

function p.Int_ParT (frame)
	return Int_Par0 (frame, 1) 
end

function p.RInt_Par (frame)
	local N, Valid, k = RNum_ParX (frame) 
	return WithInt (N, Valid, k)
end

function RInt_Par0 (frame, Inc)
	local N, Valid, k = RNum_Par0 (frame, Inc)
	return WithInt (N, Valid, k)
end

function p.RInt_ParP (frame)
	return RInt_Par0 (frame, 0) 
end

function p.RInt_ParT (frame)
	return RInt_Par0 (frame, 1) 
end

----

function Bool0 (B, Default)
	local Bool = yesno (B, Default)
	if Bool == nil then
		return nil
	elseif Bool or (Bool == 1) then 
		return 1
	else
		return 0
	end
end	--Bool0

function Bool_Par (frame, func)
	local args = SA.GetArgs (frame, true, true)
	local B = func (args)
	if SA.Error.yes then 
		return SA.MsgError()
	else	
		local Default = SA.Int_Par (args, 2)
		return Bool0 (B, Default)
	end	
end --Bool_Par

function Bool_Par0 (frame, Inc)
	local args, tab = Str_Par01 (frame, Inc)
	if SA.Error.yes then 
		return SA.MsgError() 
	else
		local B = Str_ParArgs (frame, tab)
		local Default = SA.Int_Par (args, 2+Inc)
		return Bool0 (B, Default)
	end
end --Bool_Par0	

function RBool_Par0 (frame, Inc)
	local args, tab = Str_Par01 (frame, Inc)
	if SA.Error.yes then 
		return SA.MsgError() 
	else
		local B, k = Str_ParArgs (frame, tab)
		local OKEmpty = SA.Bool_Par (args, 2+Inc, nil)
		B = Bool0 (B)
		if (B == nil) and ((OKEmpty == nil) or (not OKEmpty)) then
			SA.NotAssignedValue (k)
			return SA.MsgError()
		else
			return B
		end	
	end
end --RBool_Par0	

function BoolFromArg (args)
	return SA.Str_Par (args, 1)
end	

function RBoolFromArg (args)
	return SA.RStr_Par (args, 1)
end	

function p.Bool_Par (frame)
	return Bool_Par (frame, BoolFromArg)
end

function p.Bool_ParP (frame)
	return Bool_Par0 (frame, 0)
end

function p.Bool_ParT (frame)
	return Bool_Par0 (frame, 1)
end

function p.RBool_Par (frame)
	return Bool_Par (frame, RBoolFromArg)
end

function p.RBool_ParP (frame)
	return RBool_Par0 (frame, 0)
end

function p.RBool_ParT (frame)
	return RBool_Par0 (frame, 1)
end

----

local function ArgsTNTTabWd (frame, Inc)
	local args, NArgs = SA.GetArgs (frame, true, true)
	local TNTTab = GetTNTTab (frame, args, Inc)
	local Wd = SA.RStr_Par (args, 1+Inc)
	local CaseSens = SA.RBool_Par (args,2+Inc)
	return args, NArgs, TNTTab, Wd, CaseSens
end --ArgsTNTTabWd

function FoundStrBool (frame, Inc)
	local args, NArgs, TNTTab, Wd, CaseSens = ArgsTNTTabWd (frame, Inc)
	local Bool = false
	if not SA.Error.yes then 
		Bool = TNTT.SFoundInTNTArr (TNTTab, Wd, CaseSens, args[4])
	end	
	if SA.Error.yes then 
		return SA.MsgError()
	elseif Bool then 
		return 1
	else
		return 0
	end
end --FoundStrBool
	
function p.FoundStrBoolP (frame)
	return FoundStrBool (frame, 0)  
end

function p.FoundStrBoolT (frame)
	return FoundStrBool (frame, 1)  
end

function StrIdxChkTab (frame, Inc)
	local args, NArgs, TNTTab, Wd, CaseSens = ArgsTNTTabWd (frame, Inc)
	if SA.Error.yes then 
		return SA.MsgError() 
	end
	local tab = SA.StrTab_NPar (args, NArgs, 3+Inc, 1, nil, 0)
	local Idx = 0
	if not SA.Error.yes then 
		Idx = TNTT.IdxFromTabTrans (TNTTab, Wd, CaseSens, tab)
	end	
	if SA.Error.yes then 
		return SA.MsgError()
	else
		return Idx
	end	
end --StrIdxChkTab

function p.StrIdxChkTabP (frame)
	return StrIdxChkTab (frame, 0)  
end

function p.StrIdxChkTabT (frame)
	return StrIdxChkTab (frame, 1)  
end
	
function StrIdxChkTabE (frame, Inc)
	local args, NArgs, TNTTab, Wd, CaseSens = ArgsTNTTabWd (frame, Inc)
	if SA.Error.yes then 
		return SA.MsgError() 
	end
	local tab = SA.StrTab_NPar (args, NArgs, 3+Inc, 1, nil, 0)
	local Val = 0
	if not SA.Error.yes then 
		Val = TNTT.IdxFromTabTrans (TNTTab, Wd, CaseSens, tab)
	end	
	if SA.Error.yes then 
		return SA.MsgError()
	else
		if Val == 0 then
			local S = ''
			for I, W in ipairs(tab) do
				if S ~='' then
					S = S..', '
				end	
				S = S..table.concat (TNTT.TabTransCS(TNTTab,W), SA.ParaSep)
			end
			SA.MsgError(I18nStr (RS_SNotFoundInTab, Wd, S))
			return SA.MsgError()
		else	
			return Val
		end	
	end	
end --StrIdxChkTabE

function p.StrIdxChkTabEP (frame)
	return StrIdxChkTabE (frame, 0)  
end

function p.StrIdxChkTabET (frame)
	return StrIdxChkTabE (frame, 1)  
end

return p