stringtranslate.com

Módulo:Cadena

--[[ Este módulo está pensado para proporcionar acceso a funciones básicas de cadenas. La mayoría de las funciones proporcionadas aquí pueden ser invocadas con parámetros nombrados, parámetros sin nombre o una combinación de ellos. Si se utilizan parámetros nombrados, Mediawiki eliminará automáticamente cualquier espacio inicial o final del parámetro. Dependiendo del uso previsto, puede ser ventajoso conservar o eliminar dichos espacios. Opciones globales  ignore_errors: Si se establece en 'true' o 1, cualquier condición de error dará como resultado que  se devuelva una cadena vacía en lugar de un mensaje de error.  error_category: Si ocurre un error, especifica el nombre de una categoría para  incluir con el mensaje de error. La categoría predeterminada es  [Categoría:Errores informados por el módulo String].  no_category: Si se establece en 'true' o 1, no se agregará ninguna categoría si  se genera un error. Las pruebas unitarias para este módulo están disponibles en Módulo:String/tests. ]] local str = {} --[[ len Esta función devuelve la longitud de la cadena de destino. Uso: {{#invoke:String|len|target_string|}} O {{#invoke:String|len|s=target_string}} Parámetros  s: La cadena cuya longitud se va a informar. Si se invoca utilizando parámetros nombrados, Mediawiki eliminará automáticamente cualquier espacio inicial o final de la cadena de destino. ]] function str . len ( frame ) local new_args = str . _getParameters ( frame . args , { 's' } ) local s = new_args [ 's' ] o '' return mw . ustring . len ( s ) end --[[ sub Esta función devuelve una subcadena de la cadena de destino en los índices especificados. Uso: {{#invoke:String|sub|target_string|start_index|end_index}} O {{#invoke:String|sub|s=target_string|i=start_index|j=end_index}} Parámetros  s: La cadena de la que se devolverá un subconjunto  i: El primer índice de la subcadena que se devolverá, el valor predeterminado es 1.  j: El último índice de la cadena que se devolverá, el valor predeterminado es el último carácter. Al primer carácter de la cadena se le asigna un índice de 1. Si i o j                    es un valor negativo, se interpreta igual que seleccionar un carácter contando desde el final de la cadena. Por lo tanto, un valor de -1 es lo mismo que seleccionar el último carácter de la cadena. Si los índices solicitados están fuera del rango para la cadena dada, se informa un error. ]] function str . sub ( frame ) local new_args = str . _getParameters ( frame . args , { 's' , 'i' , 'j' } ) local s = new_args [ 's' ] o '' local i = tonumber ( new_args [ 'i' ] ) o 1 local j = tonumber ( new_args [ 'j' ] ) o - 1 local len = mw . ustring . len ( s ) -- Convierte negativos para verificación de rango si i < 0 entonces i = len + i + 1 fin si j < 0 entonces j = len + j + 1 fin si i > len o j > len o i < 1 o j < 1 entonces devuelve str . _error ( 'Índice del subconjunto de la cadena fuera de rango' ) fin si j < i entonces devuelve str . _error ( 'Índices del subconjunto de la cadena fuera de orden' ) fin devuelve mw . ustring . sub ( s , i , j ) fin --[[ Esta función implementa las características de {{str sub old}} y se mantiene para mantener estas plantillas más antiguas. ]] función str .                                                                                         sublength (  frame  ) local i = tonumber ( frame . args . i ) o 0 local len = tonumber ( frame . args . len ) return mw . ustring . sub ( frame . args . s , i + 1 , len and ( i + len ) ) end --[[ _match Esta función devuelve una subcadena de la cadena de origen que coincide con un patrón especificado. Se exporta para su uso en otros módulos Uso: strmatch = require("Module:String")._match sresult = strmatch( s, pattern, start, match, plain, nomatch ) Parámetros  s: La cadena a buscar  patrón: El patrón o cadena a encontrar dentro de la cadena  inicio: El índice dentro de la cadena de origen para iniciar la búsqueda. El primer  carácter de la cadena tiene índice 1. El valor predeterminado es 1.  match: En algunos casos, puede ser posible realizar múltiples coincidencias en una sola  cadena. Esto especifica qué coincidencia devolver, donde la primera coincidencia es  match= 1. Si se especifica un número negativo, se devuelve una coincidencia  contando desde la última coincidencia. Por lo tanto, match = -1 es lo mismo que solicitar  la última coincidencia. El valor predeterminado es 1.  plain: una bandera que indica que el patrón debe entenderse como  texto sin formato. El valor predeterminado es false.  nomatch: si no se encuentra ninguna coincidencia, se muestra el valor "nomatch" en lugar de un error. Para obtener información sobre la construcción de patrones de Lua, una forma de [expresión regular], consulte: * http://www.lua.org/manual/5.1/manual.html#5.4.1 * http://www.mediawiki.org/wiki/Module:String/Extension:Scribunto/Lua_reference_manual#Patterns * http://www.mediawiki.org/wiki/Module:String/Extension:Scribunto/Lua_reference_manual#Ustring_patterns ]] -- Esta subrutina se exporta para su uso en otros módulos function str . _match ( s , patrón , inicio , índice_de_coincidencia , bandera_normal , nomatch ) si s == '' entonces devuelve str . _error                                      (   ' La cadena de destino está vacía' ) fin si patrón == ' ' entonces devuelve str._error ( ' La cadena de patrón está vacía' ) fin inicio = tonumber ( inicio ) o 1 si math.abs ( inicio ) < 1 o math.abs ( inicio ) > mw.ustring.len ( s ) entonces devuelve str._error ( ' El inicio solicitado está fuera de rango' ) fin si match_index == 0 entonces devuelve str._error ( ' El índice de coincidencia está fuera de rango' ) fin si plain_flag entonces patrón = str._escapePattern ( patrón ) fin resultado local si match_index == 1 entonces -- Encontrar la primera coincidencia es simple caso resultado = mw.ustring.match ( s , patrón , inicio ) de lo contrario si inicio > 1 entonces s = mw.ustring.sub ( s , inicio ) fin iterador local = mw.ustring . gmatch ( s , patrón ) si match_index > 0 entonces -- Búsqueda hacia adelante para w en iterador do match_index = match_index - 1 si match_index == 0 entonces resultado = w break fin fin de lo contrario -- Búsqueda inversa local result_table = {} local count = 1 para w en                                                                                        iterador  do result_table [ count ] = w count = count + 1 end result = result_table [ count + match_index ] end end if result == nil then if nomatch == nil then return str . _error ( 'No se encontró coincidencia' ) else return nomatch end else return result end end --[[ match Esta función devuelve una subcadena de la cadena de origen que coincide con un patrón especificado. Uso: {{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch_output}} O {{#invoke:String|match|s=source_string|pattern=pattern_string|start=start_index  |match=match_number|plain=plain_flag|nomatch=nomatch_output}} Parámetros  s: La cadena a buscar  patrón: El patrón o cadena a encontrar dentro de la cadena  inicio: El índice dentro de la cadena de origen para iniciar la búsqueda. El primer  carácter de la cadena tiene índice 1. El valor predeterminado es 1.  match: En algunos casos, puede ser posible hacer múltiples coincidencias en una sola  cadena. Esto especifica qué coincidencia devolver, donde la primera coincidencia es  match= 1. Si se especifica un número negativo, se devuelve una coincidencia  contando desde la última coincidencia. Por lo tanto, match = -1 es lo mismo que solicitar  la última coincidencia. El valor predeterminado es 1.  plain: Una bandera que indica que el patrón debe entenderse como  texto sin formato. El valor predeterminado es false.  nomatch: Si no se encuentra ninguna coincidencia, se muestra el valor "nomatch" en lugar de un error. Si se invoca utilizando parámetros nombrados, Mediawiki eliminará automáticamente cualquier espacio en blanco inicial o final de cada cadena. En algunas circunstancias, esto es deseable, en otros casos es posible que se desee conservar el espacio en blanco. Si match_number o start_index están fuera del rango de la cadena que se está consultando, esta función genera un error. También se genera un error si no se encuentra ninguna coincidencia. Si se agrega el parámetro ignore_errors=true, se suprimirá el error y se devolverá una cadena vacía en caso de falla. Para obtener información sobre la construcción de patrones de Lua, una forma de [expresión regular], consulte:                         * http://www.lua.org/manual/5.1/manual.html#5.4.1 * http://www.mediawiki.org/wiki/Module:String/Extension:Scribunto/Lua_reference_manual#Patterns * http://www.mediawiki.org/wiki/Module:String/Extension:Scribunto/Lua_reference_manual#Ustring_patterns ]] -- Este es el punto de entrada para la función #invoke:String|match str . match ( frame ) local new_args = str . _getParameters ( frame . args , { 's' , 'pattern' , 'start' , 'match' , 'plain' , 'nomatch' } ) local s = new_args [ 's' ] o '' local start = tonumber ( new_args [ 'start' ] ) o 1 local plain_flag = str . _getBoolean ( new_args [ 'plain' ] o false ) local pattern = new_args [ 'pattern' ] o '' local match_index = math.floor ( tonumber ( new_args [ 'match' ]) o 1 ) local nomatch = new_args [ 'nomatch' ] return str . _match ( s , pattern , start , match_index , plain_flag , nomatch ) end --[[ pos Esta función devuelve un solo carácter de la cadena de destino en la posición pos. Uso: {{#invoke:String|pos|target_string|index_value}} O {{#invoke:String|pos|target=target_string|pos=index_value}} Parámetros  target: La cadena a buscar  pos: El índice del carácter a devolver Si se invoca usando parámetros nombrados, Mediawiki eliminará automáticamente cualquier espacio inicial o final de la cadena de destino. En algunas circunstancias esto es deseable, en otros casos uno puede querer preservar el espacio en blanco.                                                        El primer carácter tiene un valor de índice de 1. Si uno solicita un valor negativo, esta función seleccionará un carácter contando hacia atrás desde el final de la cadena. En otras palabras, pos = -1 es lo mismo que preguntar por el último carácter. Un valor solicitado de cero, o un valor mayor que la longitud de la cadena devuelve un error. ]] function str . pos ( frame ) local new_args = str . _getParameters ( frame . args , { 'target' , 'pos' } ) local target_str = new_args [ 'target' ] or '' local pos = tonumber ( new_args [ 'pos' ] ) or 0 if pos == 0 or math.abs ( pos ) > mw . ustring . len ( target_str ) then return str . _error ( 'Índice de cadena fuera de rango' ) end return mw . ustring . sub ( target_str , pos , pos ) end --[[ str_find Esta función duplica el comportamiento de {{str_find}}, incluidas todas sus peculiaridades. Esto se proporciona para admitir plantillas existentes, pero NO SE RECOMIENDA para código y plantillas nuevos. Se recomienda que el código nuevo utilice la función "find" en su lugar. Devuelve el primer índice en "source" que coincide con "target". La indexación se basa en 1 y la función devuelve -1 si la cadena "target" no está presente en "source". Nota importante: si la cadena "target" está vacía o falta, esta función devuelve un valor de "1", que generalmente es un comportamiento inesperado y debe tenerse en cuenta por separado. ]] function str . str_find ( frame ) local new_args = str . _getParameters ( frame . args , { 'source' ,'objetivo' } ) local                                                   source_str  =  new_args [ 'source' ]  o  '' local target_str = new_args [ 'target' ] o '' si target_str == '' entonces devuelve 1 fin local start = mw . ustring . find ( source_str , target_str , 1 , true ) si start == nil entonces start = - 1 fin devuelve start fin --[[ find Esta función permite buscar una cadena de destino o un patrón dentro de otra cadena. Uso: {{#invoke:String|find|source_str|target_string|start_index|plain_flag}} O {{#invoke:String|find|source=source_str|target=target_str|start=start_index|plain=plain_flag}} Parámetros  source: La cadena a buscar  target: La cadena o patrón a buscar dentro de source  start: El índice dentro de la cadena source para iniciar la búsqueda, por defecto 1  plain: Indicador booleano que indica que target debe entenderse como  texto sin formato y no como una expresión regular de estilo Lua, por defecto true Si se invoca usando parámetros nombrados, Mediawiki eliminará automáticamente cualquier espacio en blanco inicial o final del parámetro. En algunas circunstancias esto es deseable, en otros casos uno puede querer preservar el espacio en blanco. Esta función devuelve el primer índice >= "start" donde "target" se puede encontrar dentro de "source". Los índices se basan en 1. Si no se encuentra "target", esta función retorna 0. Si "source" o "target" faltan o están vacíos, esta función también retorna 0. Esta función debería ser segura para cadenas UTF-8. ]] function str . find ( frame ) local new_args = str . _getParameters ( frame . args , { 'source' , 'target' , 'start' ,'normal' } ) local source_str = new_args [ 'fuente' ] o '' patrón local                                             =  new_args [ 'target' ]  o  '' local start_pos = tonumber ( new_args [ 'start' ]) o 1 local plain = new_args [ 'plain' ] o verdadero si source_str == '' o patrón == '' entonces devuelve 0 fin plain = str . _getBoolean ( plain ) local start = mw . ustring . find ( source_str , patrón , start_pos , plain ) si start == nil entonces start = 0 fin devuelve start fin --[[ replace Esta función permite reemplazar una cadena de destino o un patrón dentro de otra cadena. Uso: {{#invoke:String|replace|source_str|pattern_string|replace_string|replacement_count|plain_flag}} O {{#invoke:String|replace|source=source_string|pattern=pattern_string|replace=replace_string|  count=replacement_count|plain=plain_flag}} Parámetros  source: La cadena a buscar  pattern: La cadena o patrón a buscar dentro de source  replace: El texto de reemplazo  count: El número de ocurrencias a reemplazar, el valor predeterminado es todos.  plain: Indicador booleano que indica que el patrón debe entenderse como  texto sin formato y no como una expresión regular de estilo Lua, el valor predeterminado es verdadero ]] function str . replace ( frame ) local new_args = str . _getParameters ( frame . args , { 'source' , 'pattern' , 'replace' , 'count' ,'simple' } ) local source_str = new_args [ 'fuente' ] o '' local pattern = new_args [ 'patrón' ] o '' local                                                               replace  =  new_args [ 'replace' ]  o  '' local count = tonumber ( new_args [ 'count' ] ) local plain = new_args [ 'plain' ] o verdadero si source_str == '' o patrón == '' entonces devuelve source_str fin plain = str . _getBoolean ( plain ) si plain entonces patrón = str . _escapePattern ( patrón ) replace = string. gsub ( replace , "%%" , "%%%%" ) --Solo es necesario escapar secuencias de reemplazo. fin local result si count ~= nil entonces result = mw . ustring . gsub ( source_str , patrón , replace , count ) de lo contrario result = mw . ustring . gsub ( source_str , patrón , replace ) fin devuelve result fin --[[  función simple para canalizar string.rep a las plantillas. ]] función str . rep ( frame ) repeticiones locales = tonumber ( frame . args [ 2 ] ) si no son repeticiones entonces devuelve str . _error ( 'la función rep espera un número como segundo parámetro, recibió "' .. ( frame . args [ 2 ] o '' ) .. '"' ) fin devuelve string.rep ( frame . args [ 1 ] o '' ,                                                                                  repeticiones  ) fin --[[ escapePattern Esta función escapa caracteres especiales de un patrón de cadena Lua. Vea [1] para detalles sobre cómo funcionan los patrones. [1] https://www.mediawiki.org/wiki/Module:String/Extension:Scribunto/Lua_reference_manual#Patterns Uso: {{#invoke:String|escapePattern|pattern_string}} Parámetros  pattern_string: La cadena de patrón a escapar. ]] function str . escapePattern ( frame ) local pattern_str = frame . args [ 1 ] if not pattern_str then return str . _error ( 'No se especificó ninguna cadena de patrón' ) fin local result = str . _escapePattern ( pattern_str ) return result fin --[[ count Esta función cuenta el número de ocurrencias de una cadena en otra. ]] function str . count ( frame ) local args = str . _getParameters ( frame.args , { ' fuente ' , 'patrón' , 'simple' }) fuente local = args.fuente o ' ' patrón local = args.patrón o '' llanura local = str._getBoolean ( args.simple o verdadero ) si es simple entonces patrón = str._escapePattern ( patrón ) fin local _ , conteo = mw.ustring.gsub ( fuente , patrón , ' ' ) devolver conteo fin -- [ [ endswith Esta función determina si una cadena termina con otra cadena . ] ] función str.endswith (                                                    frame ) local args = str . _getParameters ( frame . args , { 'source' , 'pattern' }) local source = args . source o '' local pattern = args . pattern o '' if pattern == '' then -- Todas las cadenas terminan con la cadena vacía. return "yes" end if mw . ustring . sub ( source , - mw . ustring . len ( pattern ), - 1 ) == pattern then return "yes" else return "" end end --[[ join Une todos los argumentos no vacíos; el primer argumento es el separador. Uso: {{#invoke:String|join|sep|one|two|three}} ]] function str . join ( frame ) local args = {} local sep for _ , v in ipairs ( frame . args ) do if sep then if v ~= '' then table.insert ( args , v ) end else sep = v end end return table.concat ( args , sep or '' ) end --[[ Función auxiliar que rellena la lista de argumentos dado que el usuario puede necesitar usar una mezcla de parámetros nombrados y sin nombre. Esto es relevante porque los parámetros nombrados no son idénticos a los parámetros sin nombre debido al recorte de cadenas, y cuando se trabaja con cadenas a veces queremos preservar o eliminar ese espacio en blanco dependiendo de la aplicación. ]] function str . _getParameters ( frame_args , arg_list ) local new_args =                                                              { } índice local = 1 valor local para _ , arg en ipairs ( arg_list ) hacer valor = frame_args [ arg ] si valor == nulo entonces valor = frame_args [ índice ] índice = índice + 1 fin nuevos_args [ arg ] = valor fin devolver nuevos_args fin -- [[ Función auxiliar para manejar mensajes de error. ] ] función str._error ( error_str ) marco local = mw.getCurrentFrame ( ) categoría_error local = frame.args.categoría_error o ' Errores informados por el módulo String ' ignore_errors local = frame.args.ignor_errors o falso no_category local = frame.args.no_category o falso si str . _getBoolean ( ignore_errors ) entonces devuelve '' fin local error_str = '<strong class="error">Error del módulo de cadena: ' .. error_str .. '</strong>' si error_category ~= '' y no str . _getBoolean ( no_category ) entonces error_str = '[[Categoría:' .. error_category .. ']]' .. error_str fin devuelve error_str fin --[[ Función auxiliar para interpretar cadenas booleanas ]] función str . _getBoolean ( boolean_str ) valor_booleano local si tipo ( boolean_str ) == 'cadena' entonces boolean_str =                                                                                       boolean_str : lower () si boolean_str == 'false' o boolean_str == 'no' o boolean_str == '0' o boolean_str == '' entonces boolean_value = false de lo contrario boolean_value = true end de lo contrario si tipo ( boolean_str ) == 'booleano' entonces boolean_value = boolean_str de lo contrario error ( 'No se encontró ningún valor booleano' ) end return boolean_value end --[[ Función auxiliar que escapa todos los caracteres de patrón para que se traten como texto sin formato. ]] function str . _escapePattern ( pattern_str ) return ( string.gsub ( pattern_str , "[%(%)%.%%%+%-%*%?%[%^%$%]]" , "%%%0" ) ) end return str