Módulo:SimpleArgs/doc

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

Esta es la página de documentación de Módulo:SimpleArgs

Uso

Utilizado por otros módulos para comprobación de parámetros pasados.

Plantilla:ForMultilingualTrans

Funciones

  • Arg(ument)s son los argumentos del frame actual.
  • Par(armeter)Id(entificator) es el nombre/s o el orden del parámetro.
  • La marca * indica que es un parámetro opcional. Si no se quiere asignar un valor opcional no correlativo se puede asignar el valor de nil.
Ejemplo: función_de_número (Args, paridas, LimInf*, LimSup*) -> función_de_número (args, 1, nil, 12), comprobará que el número no sea mayor de 12.
Obviamente sería correcto -> función_de_número (args, 1), sin ninguna comprobación de los valores de los números.
  • Str(ing): Cadena.
  • Num(ber): Número.
  • Int(teger): Entero.
  • Pos(itive)Num/Int: Número/entero positivo.
  • ZeroOrPosNum/Int: Cero o número/entero positivo.
  • Char(acter): Caracter.
  • Tab(ble): Tabla.

Principal

  • GetArgs (frame, HandleError*, SameSize*) - Devuelve los argumentos y su número.
Si HandleError == true -> Error.handle = true
Si SameSize == true -> Error.samesize = true

Manipulación de los errores

  • Error = {
handle = false,
yes = false,
msg = ,
samesize = false,
}
  • MsgError (S)

Si handle = false, cuando se produce un error se presenta un error de lua. Así: Error Lua: error.

Si handle = true, es el que hace el módulo quien deberá hacer un return con el error, así return MsgError(), devolviendo la fuente de un error de lua. Así: error. Se hace una comprobación parámetro a parámetro si no se detecta ningún error.

  • El error se anota en una variable.
  • Se anota que ha habido un error y así no se comprueba más errores en el resto de parámetros.
  • Al final de la comprobación y entrada de variables el programador debería escribir: if SA.Error.yes then return SA.MsgError() end (donde SA está definida cómo local SA = require "Module:SimpleArgs").

Si handle = true y samesize = true entonces el mensaje devuelto será con letra en negrita y de color rojo. Así: error.

Vea los ejemplos.

Comprobación de los nombres de los parámetros

V/F nombre Parámetros o
Valores
Descripción
F CheckParams args, UsualArgs Comprobación de los nombres de los parámetros (de args) según la tabla de nombres permitidos para los parámetros (UsualArgs). Si un mismo parámetro tiene varios nombres, estos nombres se pueden agrupar en una tabla, como se muestra en ejemplo más abajo (modo sencillo). Se genera un error indicando el nombre de palabra no encontrado.
V HasChild HasChild Utilizado en CheckParamsM
F CheckParamsM args, UsualArgs, OtherArgs*, ArgNamesIn1 Realiza la comprobación de los parámetros como CheckParams pero con tablas más complejas.

UsualArgs La lista de parámetros con diversas estructuras (véase más abajo, en modo sencillo i).

OtherArgs Es una tabla sencilla que contiene nombres de parámetros que no necesitan ninguna traducción. Se trata de parámetros para funciones específicas como pueden ser listados de parámetros, cambio de idioma o una demostración.

Devuelve dos tablas con los dos tipos de errores encontrados. Una lista con los nombres de los parámetros no encontrados y el otro con duplicados. Un parámetro duplicado es un error raro que se puede producir cuando un parámetro puede tener más de una denominación y en la llamada desde una plantilla se hace más de una llamada con el mismo parámetro.

Tablas UsualArgs

1. Ejemplos para CheckParams y CheckParamsM o modo sencillo:

{"name", "surname"}

Modo sencillo con más de un nombre por parámetro:

{{"name","Name"}, {"surname","Surname"}}

2. Ejemplos para CheckParamsM o modo complejo:

Utilizando ArgNamesIn1 = true, se indica que es el primer elemento o tabla lo que contiene el nombre o los nombres de los parámetros:

    ['birth'] = {{"birth_year",1}, "P569"}, 
    ['death'] = {{"death_year",2}, "P570"},
    ['intro'] = {"intro",          "Q305178"},

Utilizando HasChild:

    [SA.HasChild] = true,
    ['year'] = {
        ['birth'] = {"birth_year",1},
        ['death'] = {"death_year",2},
    },	
    ['other'] = {
        ['intro'] = "intro",
    },	

Otras

  • p.ParamsSep = '/' - Variable usada para la siguiente función.
  • ConcatParams (tab) - Se utiliza cuando un parámetro tiene más de un nombre para el mismo parámetro.

Comprobación de números

Devuelven el número N si este número es correcto, de lo contrario devuelven un mensaje de error.

Nombre Parámetros
CheckNum N, ParId, LimInf, LimSup
CheckNumIsInt N, ParId, LimInf*, LimSup*)
CheckNumIsPos N, ParId, LimInf*, LimSup*)
CheckNumIsZeroOrPos N, ParId, LimSup*)

Comprobación de si las cadenas son números

Devuelven un número si la cadena es un número correcto, de lo contrario devuelven un mensaje de error.

Nombre Parámetros
CheckSIsNum S, ParId, LimInf*, LimSup*
CheckSIsInt S, ParId, LimInf*, LimSup*
CheckSIsPosInt S, ParId, LimInf*, LimSup*
CheckSIsZeroOrPosInt S, ParId, LimSup*

Valores de los parámetros específicos del frame

Las funciones con una R inicial indican que el parámetro es necesario. Devuelven el valor del tipo pedido del parámetro si es correcto, de lo contrario devuelven un mensaje de error.

Mire los ejemplos de Módulo:SimpleArgs/Tests/SVals

Cadenas

Nombre Parámetros
Str_Par Args, ParId, Default*
RStr_Par Args, ParId, OKEmpty*
Char_Par Args, ParId, Pattern, Default*
RChar_Par Args, ParId, Pattern
NulOrWhitespace_Par Args, ParId
StrChkTab_Par Args, ParId, Tab, CaseSens*, Default*
RStrChkTab_Par Args, ParId, Tab, CaseSens*
StrIdxChkTab_Par Args, ParId, Tab, CaseSens*, Default*
RStrIdxChkTab_Par Args, ParId, Tab, CaseSens*

Números reales

Nombre Parámetros
Num_Par Args, ParId, Default*, LimInf*, LimSup*
RNum_Par Args, ParId, LimInf*, LimSup*
PosNum_Par Args, ParId, Default*, LimInf*, LimSup*
RPosNum_Par Args, ParId, LimInf*, LimSup*
ZeroOrPosNum_Par Args, ParId, Default*, LimSup*
RZeroOrPosNum_Par Args, ParId, LimSup*

Números enteros

Nombre Parámetros
Int_Par Args, ParId, Default*, LimInf*, LimSup*
RInt_Par Args, ParId, LimInf*, LimSup*
PosInt_Par Args, ParId, Default*, LimInf*, LimSup*
RPosInt_Par Args, ParId, LimInf*, LimSup*
ZeroOrPosInt_Par Args, ParId, Default*, LimSup*
RZeroOrPosInt_Par Args, ParId, LimSup*

Tamaño, html

Donde limits es una tabla con los márgenes inferior y superior de los 3 tipos de tamaño posibles: porcentaje (perc), em y píxel (px):

Por ejemplo: {perc={20,100}, em={12,119}, px={200,1900}}

Nombre Parámetros
Size_Par Args, ParId, WithPerc, limits*, Default*
RSize_Par Args, ParId, WithPerc, limits*

Colores, html

Devuelve, con las siguientes funciones el color pasado como parámetro es devuelto como cadena y sólo la parte "numérica" (NNNNNN). Así si el parámetro es "Green" devuelve '008000', y si es '#00800B' devuelve '00800B'. Admite los nombres de colores web.

Nombre Parámetros
Color_Par Args, ParId, Default*
RColor_Par Args, ParId

También existe la siguiente función ReverseColor que permite encontrar el color "contrario" al introducido para conseguir el máximo contraste. Esto facilita determinar el color del texto para un fondo de color determinado o viceversa. Así, por ejemplo:

  • {{#invoke:SimpleArgs|ReverseColor|Red}} devuelve Aqua
  • {{#invoke:SimpleArgs|ReverseColor|#000000}} devuelve White

Existe la función _ReverseColor (rgb) a llamar desde otro módulo donde rgb es el color en formato NNNNNN. Para convertir el color a formato NNNNNN existe la función CheckSIsColor.

Alineación horizontal

Donde los valores posibles son: left|izquierdo|izquierda, center|centro y right|derecho|derecha.

Nombre Parámetros
HAlign_Par Args, ParId, Default*
RHAlign_Par Args, ParId

Alineación vertical

Donde los valores posibles son: top|arriba, center|centro y bottom|abajo.

Nombre Parámetros
VAlign_Par Args, ParId, Default*
RVAlign_Par Args, ParId

Booleano

Donde los valores posibles son: sí|si|s|yes|y|true|verdad|t|1 y no|n|false|falso|f|0.

Nombre Parámetros
Bool_Par Args, ParId, Default*
RBool_Par Args, ParId

Índice de una lista

Nombre Parámetros
StrIdxChkTab Args, ParId, CaseSens, Default, ...
RStrIdxChkTab Args, ParId, CaseSens, ...
StrIdxChkTabE Args, ParId, CaseSens, Default, ...
RStrIdxChkTabE Args, ParId, CaseSens, ...

Tablas de tablas de cadenas o números

MinItemNum y MaxItemNum, indican el mínimo y el máximo de elementos insertados en la tabla.

Cuando alguno de los valores no esté asignado actuará según OnEmpty: 0: Se incluirá. 1: No se incluirá. 2. Activará un error y su mensaje.

De un parámetro

Para el mismo parámetro con los elementos separados por Sep. Ejemplo, con "sep" = ":" y el parámetro = "12: 1: 1,3" devuelve {12, 1, 1.3}

Nombre Parámetros
StrTab_1Par Args, ParId, Sep, MinItemNum*, MaxItemNum*, OnEmpty*
NumTab_1Par Args, ParId, Sep, MinItemNum*, MaxItemNum*, LimInf*, LimSup*, OnEmpty*
PosNumTab_1Par Args, ParId, Sep, MinItemNum*, MaxItemNum*, LimInf*, LimSup*, OnEmpty*
ZeroOrPosNumTab_1Par Args, ParId, Sep, MinItemNum*, MaxItemNum*, LimInf*, LimSup*, OnEmpty*
IntTab_1Par Args, ParId, Sep, MinItemNum*, MaxItemNum*, LimInf*, LimSup*, OnEmpty*
PosIntTab_1Par Args, ParId, Sep, MinItemNum*, MaxItemNum*, LimInf*, LimSup*, OnEmpty*
ZeroOrPosIntTab_1Par Args, ParId, Sep, MinItemNum*, MaxItemNum*, LimInf*, LimSup*, OnEmpty*
De varios parámetros

Nota diferencial, para Par(armeter)Id(entificator):

  • Si es una posición:
    • Y es un 1: captará todos los parámetros desde el primero hasta el último que no sea un número. Así puede contener parámetros no numéricos (no posicionales a la vez).
    • Y es otro número: captará todos los parámetros desde la posición hasta el último (pasado por NArgs).

Los parámetros pueden ser:

  • Si es una cadena, ésta deberá contener un $d que será sustituido por un entero correlativo (a partir del 1) hasta que no se encuentre ningún parámetro. Ejemplo: 'para $d, buscará 'para 1', 'para 2', etc.
  • Si es una tabla, se hará la misma búsqueda que el anterior punto por cada uno de los valores. Ejemplo: {'para $d, param $d}, buscará 'para 1' y 'param 1', después 'para 2' y 'param 2', etc.

Las funciones:

Nombre Parámetros
StrTab_NPar Args, NArgs, ParId, MinItemNum*, MaxItemNum*, OnEmpty*
NumTab_NPar Args, NArgs, ParId, MinItemNum*, MaxItemNum*, LimInf*, LimSup*, OnEmpty*
PosNumTab_NPar Args, NArgs, ParId, MinItemNum*, MaxItemNum*, LimInf*, LimSup*, OnEmpty*
ZeroOrPosNumTab_NPar Args, NArgs, ParId, MinItemNum*, MaxItemNum*, LimInf*, LimSup*, OnEmpty*
IntTab_NPar Args, NArgs, ParId, MinItemNum*, MaxItemNum*, LimInf*, LimSup*, OnEmpty*
PosIntTab_NPar Args, NArgs, ParId, MinItemNum*, MaxItemNum*, LimInf*, LimSup*, OnEmpty*
ZeroOrPosIntTab_NPar Args, NArgs, ParId, MinItemNum*, MaxItemNum*, LimInf*, LimSup*, OnEmpty*

Mire los ejemplos de Módulo:SimpleArgs/Tests/SVals

Otras

F/V Nombre Parámetros Explicación
F HasValue v Devuelve true si (v ~= nil) and (v ~= '')
F deep_copy_table orig Devuelve una copia de la tabl orig
F tableMerge t1, t2 Sencilla fusión de tablas, utilitzado en loadI18n.
V wiki_langcode El idioma de la Wikipedia
F get_lang langcode Devuelve langcode si tiene un valor, de lo contrario devuelve el idioma del usuario si es que éste no se encuentra en una página de artículo, en este caso devuelve el idioma de la Wikipedia.
V lang_to_use Contiene el valor de get_lang.
F I18nName ModName Devuelve el nombre del módulo i18n, en caso de wiki_langcode ~= lang_to_use devuelve i18n/lang_to_use si existe.
F loadI18n ModName, DefTable Devuelve la tabla fusionada i18n con DefTable.
F TemplateName frame Devuelve el nombre de la plantilla desde la cual es llamada. Así en la Plantilla:LaMía, escribiendo {{#invoke:SimpleArg|TemplateName}}, o invocando desde una función (llamada desde la plantilla) de un módulo con TemplateName(frame) retornarían: LaMía.
F MainTemplateName frame Similar a la anterior, para cuando se utiliza desde plantillas de prueba. Así en la Plantilla:LaMía/prueba devolvería igualmente: LaMía.
F CheckIsStr v, S Comprueba que v sea una cadena con un valor, de lo contrario genera un error.
F CheckIsStrOrTab v, S Comprueba que v sea una cadena con un valor o una tabla de cadenas con valor, de lo contrario genera un error.
F CheckIsAnyStrOrTab v, S Comprueba que v sea una cadena o una tabla de cadenas, también genera un error.

Colores

ColorToHex (frame) convierte el nombre del color en formato hexadecimal.

color_black_contrast (frame) determina la luminosidad de un color, con algunas correcciones para grises. A utilizar para el fondo de un texto de superposición. Proviene en parte de Three algorithms for converting color to grayscale. Existe la función _color_black_contrast (rgb) a llamar desde otro módulo.

txtcolor_for_bg (frame), permite encontrar el color "contrario" al introducido para conseguir el máximo contraste del texto, determinando si debe ser blanco o negro. Existe la función _txtcolor_for_bg (rgb) a llamar desde otro módulo.

ReverseColor (frame), alternativo a color_black_contrast permite encontrar el color "contrario" al introducido para conseguir el máximo contraste. Esto facilita determinar el color del texto para un fondo de color determinado o viceversa. Existe la función _ReverseColor (rgb) a llamar desde otro módulo. Ejemplo:

  • {{#invoke:SimpleArgs|ReverseColor|Red}} devuelve Aqua
  • {{#invoke:SimpleArgs|ReverseColor|#000000}} devuelve White
Ejemplos de algunas funciones de color con algunos colores
Color de fondo
y su nombre
ColorToHex color_black_contrast Con fondo de texto
teniendo en cuenta los
valores de la columna anterior(1)
txtcolor_for_bg (2)
255 --
 LightCyan  E0FFFF 242  LightCyan   LightCyan   
 yellow  FFFF00 235  yellow   yellow   
 Wheat  F5DEB3 213  Wheat    Wheat   
200 0.3
 aqua  00FFFF 184  aqua   aqua   
 lime  00FF00 163  lime   lime   
 silver  C0C0C0 159  silver   silver   
 Violet  EE82EE 143  Violet   Violet   
140 0.5
 fuchsia  FF00FF 92  fuchsia   fuchsia   
 olive  808000 88  olive   olive   
80 0.7
 red  FF0000 71  red   red   
 teal  008080 69  teal   teal   
 gray  808080 63  gray   gray   
 green  008000 61  green   green   
 maroon  800000 27  maroon   maroon   
 blue  0000FF 20  blue   blue   
 navy  000080 8  navy   navy   

1: Utilizando <span style="background-color:rgba(255,255,255,opacity)> {{{1|}}} </span>

opacity = número de 0 a 1, utilizando los valores 0,3, 0,5 y 0,7

2: Utilizando ReverseColor