Módulo:ChartColors

De Enciclopedia de conocimiento de la Iglesia de Dios
Ir a la navegación Ir a la búsqueda

Utilizado por Plantilla:Tl y Plantilla:Tl

Plantilla:ForMultilingualTrans

Función ShowColors

Código Resultado
{{#invoke:ChartColors|ShowColors|Categ20|5}} Error de Lua en package.lua en la línea 80: module 'Module:TNTTools' not found.
{{ChartColors|Categ20|9}} Plantilla:ChartColors
{{#invoke:ChartColors|ShowColors|Categ20|3|-}} Error de Lua en package.lua en la línea 80: module 'Module:TNTTools' not found.
{{#invoke:ChartColors|ShowColors|Categ20|3|a}} Error de Lua en package.lua en la línea 80: module 'Module:TNTTools' not found.
{{#invoke:ChartColors|ShowColors|Plotter|5}} Error de Lua en package.lua en la línea 80: module 'Module:TNTTools' not found.
{{ChartColors|Plotter|20}} Plantilla:ChartColors

Función Legends

{{#invoke:ChartColors|Legends|paleta=Categ20|n_colores=5|n_cols=2}}

produce:

Error de Lua en package.lua en la línea 80: module 'Module:TNTTools' not found.


{{#invoke:ChartColors|Legends|paleta=Categ20|n_colores=3|n_cols=1|líneas=
Un
Dos
Tres}}

produce:

Error de Lua en package.lua en la línea 80: module 'Module:TNTTools' not found.


local p = {}

local SA = require "Module:SimpleArgs"
local CFCM = require "Module:ComplForColorModules"
local TNTT = require "Module:TNTTools"
local SD = require "Module:SimpleDebug"

local RS = {
	ColorNameInvalid = 'ColorNameInvalid',
	ColorNumInvalid = 'ColorNumInvalid',
	StartNumInvalid = 'StartNumInvalid',
}
local i18n = {
	[RS.ColorNameInvalid] = "El nom de la paleta de colors ($1) no és vàlid (ha de ser ''Categ20'' o ''Plotter'')",
	[RS.ColorNumInvalid]  = "El nombre de colors hauria d’estar entre 1 i $1 (ara és $2)",
	[RS.StartNumInvalid]  = "El número del primer color hauria d’estar entre 1 i $1 (ara és $2)",
}
local I18n = 'ChartColors'
i18n = SA.loadI18n (I18n, i18n)

local function I18nStr (S, ...)
	return SA.I18nStrParams (i18n[S], ...)
	--return TNTT.GetMsgP (I18n, S, {...})
end

local category20 = {
	'#1f77b4', '#aec7e8', '#ff7f0e', '#ffbb78', '#2ca02c', '#98df8a', '#d62728', '#ff9896', '#9467bd', '#c5b0d5', 
	'#8c564b', '#c49c94', '#e377c2', '#f7b6d2', '#7f7f7f', '#c7c7c7', '#bcbd22', '#dbdb8d', '#17becf', '#9edae5',
}
local plotter = {--from Module:Plotter/DefaultColors
	'red', 'blue', 'green', 'yellow', 'fuchsia', 'aqua', 'brown', 'orange', 'purple', 'sienna',
	'#F0A3FF', '#191919', '#005C31', 'honeydew', '#808080', 'khaki', 'lime', 'navy', 'pink', '#426600',
	'#5EF1F2', 'turquoise', '#E0FF66', 'violet', '#FFFF80', '#FF5005',
}

function p.GetColors (ColorName, IsInv, StartN, N, CallError)
	local SelColors = {}
	local ColorNameL = string.lower(ColorName)
	local Palet0 = {}
	if ColorNameL == 'categ20' then
		Palet0 = category20
	elseif ColorNameL == 'plotter' then
		Palet0 = plotter 
	elseif CallError then	
		error (I18nStr (RS.ColorNameInvalid,ColorName),0)
	end	
	MaxN = table.getn(Palet0)
	if (N < 0) or (N > MaxN) then
		error (I18nStr (RS.ColorNumInvalid,tostring(MaxN),tostring(N)),0)
	else
		Palet = {}
		if IsInv then
			for i=MaxN, 1, -1 do
				table.insert(Palet, Palet0[i])
			end	
		else
			Palet = Palet0
		end
		if StartN > MaxN then
			error (I18nStr (RS.StartNumInvalid,tostring(MaxN),tostring(StartN)),0)
		end	
		local Step = 1
		local NEnd = N
		if (ColorNameL == 'categ20') and (N<=10) then 
			Step = 2
			if StartN == 1 then
				NEnd = N*2
			end	
		end	
		if StartN == 1 then
			for i=1, NEnd, Step do
				table.insert(SelColors, Palet[i])
			end
		else
			Count = 0
			for i=StartN, MaxN, Step do
				table.insert(SelColors, Palet[i])
				Count = Count + 1
				if Count == NEnd then
					break
				end	
			end
			if Count < NEnd then
				for i=1, MaxN, Step do
					table.insert(SelColors, Palet[i])
					Count = Count + 1
					if Count == NEnd then
						break
					end	
				end
			end	
		end	
		return SelColors
	end	
end --GetColors

function p.ColorNameInvStartFromS (S)
	local StartN = 1
	local ParamsA = {}
	function GetStartN (Pos) 	
		SA.CheckSIsPosInt (ParamsA[Pos])
		if SA.Error.yes then 
			p.MsgError()
		else	
			StartN = tonumber (ParamsA[Pos])
		end	
	end	
	local ColorName, IsInv
	ColorName, IsInv, ParamsA = CFCM.ColorNameInvFromS0 (S)
	local PN = table.getn(ParamsA)
	if PN > 1 then
		if ParamsA[2]=='i' then
			IsInv = true
		else
			GetStartN (2)
		end
		if PN == 3 then
			GetStartN (3)
		end	
	end	
	return ColorName, IsInv, StartN
end --ColorNameInvStartFromS

function ColorNameInv (args, WithName)
	local S = CFCM.ColorNameInv0 (args, WithName)
	local ColorName, IsInv, ParamsA = CFCM.ColorNameInvFromS0 (S)
	local StartN = 1
	ColorName, IsInv, StartN = p.ColorNameInvStartFromS (S)
	return ColorName, IsInv, StartN
end --ColorNameInv	

function p.ShowColors(frame)
	local args,Nargs = SA.GetArgs (frame)
	if Nargs > 0 then 
		local ColorName, IsInv, StartN = ColorNameInv (args, false)
		local N = SA.RPosInt_Par (args, 2)
		local WriteColor = SA.Char_Par (args, 3, 'a-', '')
		local ColorFound = {}
		ColorFound = p.GetColors (ColorName, IsInv, StartN, N, true)
		local boxes = {}
		for i=1, table.getn(ColorFound) do
			table.insert(boxes, CFCM.Box(ColorFound[i],WriteColor))
		end	
		return table.concat(boxes, " ")
	end	
end --ShowColors

function p.Legends(frame)
	local args,Nargs = SA.GetArgs (frame)
	if Nargs > 0 then 
		local ColorName, IsInv, StartN = ColorNameInv (args, true)
		local n_colors = CFCM.N_Colors (args) 
		local ColorFound = {}
		ColorFound = p.GetColors (ColorName, IsInv, StartN, n_colors, true)
		return CFCM.LegendText (args, ColorFound, n_colors)
	end	
end	--Legends

return p