Módulo:SimpleArgs/doc
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
- Si
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
(dondeSA
está definida cómolocal 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.
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).
- Plantilla:Tlc -> StrTab_NPar (args, 4, 1} -> {a,b,c}
- Plantilla:Tlc -> StrTab_NPar (args, 4, 1} -> {a,b,c}
- Plantilla:Tlc -> StrTab_NPar (args, 3, 1} -> {a,b,c}
- Y es otro número: captará todos los parámetros desde la posición hasta el último (pasado por NArgs).
- Plantilla:Tlc -> StrTab_NPar (args, 4, 2} -> {a,b,c}
- Plantilla:Tlc -> StrTab_NPar (args, 4, 3} -> {b,c}
- 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).
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
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