Cambios

Ir a la navegación Ir a la búsqueda
6206 bytes añadidos ,  hace 5 años
m
Changed protection level for "Module:String": Cascade-protected from main page, so no point in enabling TE ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite))
--[[  This module is intended to provide access to basic string functions. Most of the functions provided here can be invoked with named parameters,unnamed parameters, or a mixture. If named parameters are used, Mediawiki willautomatically remove any leading or trailing whitespace from the parameter.Depending on the intended use, it may be advantageous to either preserve orremove such whitespace. Global options ignore_errors: If set to 'true' or 1, any error condition will result in an empty string being returned rather than an error message. Este módulo está destinado error_category: If an error occurs, specifies the name of a proporcionar acceso a las funciones de cadena (string) básicascategory to include with the error message. The default category is [Category:Errors reported by Module String].  no_category: If set to 'true' or 1, no category will be added if an error is generated. Unit tests for this module are available at Module:String/tests.
]]
len
ParametrosThis function returns the length of the target string. Usage:{{#invoke:String|len|target_string|}}OR{{#invoke:String|len|s=target_string}} Parameters s: La cadena a encontrar su longitud The string whose length to report
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from the target string.
]]
function str.len( frame )
local new_args = str._getParameters( frame.args, {'s'} ); local s = new_args['s'] or ''; return mw.ustring.len( s )
end
sub
ParametrosThis function returns a substring of the target string at specified indices. Usage:{{#invoke:String|sub|target_string|start_index|end_index}}OR{{#invoke:String|sub|s=target_string|i=start_index|j=end_index}} Parameters s: La cadena donde extraer la subcadena The string to return a subset of i: La cadena donde extraer la subcadenaThe fist index of the substring to return, defaults to 1. j: Índice final de la subcadenaThe last index of the string to return, por defecto la longitud totaldefaults to the last character. The first character of the string is assigned an index of 1. If either i or jis a negative value, hasta el último carácterit is interpreted the same as selecting a character bycounting from the end of the string. Hence, a value of -1 is the same as selecting the last character of the string. If the requested indices are out of range for the given string, an error isreported.
]]
function str.sub( frame )
local new_args = str._getParameters( frame.args, { 's', 'i', 'j' } ); local s = new_args['s'] or ''; local i = tonumber( new_args['i'] ) or 1; local j = tonumber( new_args['j'] ) or -1; local len = mw.ustring.len( s );  -- Convert negatives for range checking if i < 0 then i = len + i + 1 end if j < 0 then j = len + j + 1 end  if i > len or j > len or i < 1 or j < 1 then return str._error( 'String subset index out of range' ) end if j < i then return str._error( 'String subset indices out of order' ) end
-- Convertir negativos para la comprobación de rango if return mw.ustring.sub( s, i < 0 then i = len + i + 1;, j ) end if j < 0 then j = len + j + 1;--[[ endThis function implements that features of {{str sub old}} and is kept in order to maintain these older templates. if i > len or j > len or i < 1 or j < 1 then]] return function str._errorsublength( 'Índice fuera del rango de la cadena' frame ); end if j < local i = tonumber( frame.args.i then) or 0 return str local len = tonumber( frame.args._error( 'Índices de la cadena no ordenados' len ); end return mw.ustring.sub( frame.args.s, i+ 1, j len and ( i + len ) )
end
match
ParametrosThis function returns a substring from the source string that matches aspecified pattern. Usage: {{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch_output}}OR{{#invoke:String|match|s=source_string|pattern=pattern_string|start=start_index |match=match_number|plain=plain_flag|nomatch=nomatch_output}} Parameters s: cadena donde se hace la búsqueda The string to search pattern: patrón o cadena a buscar. The pattern or string to find within the string start: índice de la cadena dónde empezar a buscar, por defecto The index within the source string to start the search. The first character of the string has index 1. Defaults to 1, el primer carácter. match: si se encuentran múltiples coincidencias, especifica cuál de ellas devolverIn some cases it may be possible to make multiple matches on a single string. Por defecto es 1 This specifies which match to return, lwhere the first match is la primera coincidencia encontrada match= 1. Un número negativo cuenta desde el final, por lo tanto If a negative number is specified then a match is returned counting from the last match. Hence match = -1 es la última coincidenciais the same as requesting the last match. Defaults to 1. plain: indica si el patrón debe interpretarse como texto limpio, por defecto 'A flag indicating that the pattern should be understood as plain text. Defaults to false'. nomatch: en caso de If no encontrar ninguna coincidenciamatch is found, devuelve el valor de output the "nomatch" en lugar de un value rather than an error. Si el número match o el índice start están fuera del rango de la cadenaIf invoked using named parameters, Mediawiki will automatically remove any leading ortrailing whitespace from each string. In some circumstances this is desirable, inother cases one may want to preserve the whitespace. If the match_number or start_index are out of range for the string being queried, entonces la función genera un thenthis function generates an error. También genera un An error si is also generated if no encuentra ninguna coincidenciamatch is found. Con el parámetro global If one adds the parameter ignore_errors = true se suprime el , then the error will be suppressed andan empty string will be returned on any failure. For information on constructing Lua patterns, a form of [regular expression], see: * http://www.lua.org/manual/5.1/manual.html#5.4.1* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns error y devuelve una cadena vacía* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns 
]]
-- This sub-routine is exported for use in other modules
function str._match( s, pattern, start, match_index, plain_flag, nomatch )
if s == '' then
return str._error( 'Target string is empty' )
end
if pattern == '' then
return str._error( 'Pattern string is empty' )
end
start = tonumber(start) or 1
if math.abs(start) < 1 or math.abs(start) > mw.ustring.len( s ) then
return str._error( 'Requested start is out of range' )
end
if match_index == 0 then
return str._error( 'Match index is out of range' )
end
if plain_flag then
pattern = str._escapePattern( pattern )
end
 
local result
if match_index == 1 then
-- Find first match is simple case
result = mw.ustring.match( s, pattern, start )
else
if start > 1 then
s = mw.ustring.sub( s, start )
end
 
local iterator = mw.ustring.gmatch(s, pattern)
if match_index > 0 then
-- Forward search
for w in iterator do
match_index = match_index - 1
if match_index == 0 then
result = w
break
end
end
else
-- Reverse search
local result_table = {}
local count = 1
for w in iterator 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( 'Match not found' )
else
return nomatch
end
else
return result
end
end
-- This is the entry point for #invoke:String|match
function str.match( frame )
local new_args = str._getParameters( frame.args, {'s', 'pattern', 'start', 'match', 'plain', 'nomatch'} ); local s = new_args['s'] or ''; local start = tonumber( new_args['start'] ) or 1; local plain_flag = str._getBoolean( new_args['plain'] or false ); local pattern = new_args['pattern'] or ''; local match_index = math.floor( tonumber(new_args['match']) or 1 ); local nomatch = new_args['nomatch']; if s == '' then return str._error( 'La cadena donde buscar está vacía' ); end if pattern == '' then return str._error( 'La cadena de búsqueda está vacía ' ); end if math.abs(start) < 1 or math.abs(start) > mw.ustring.len( s ) then return str._error( 'Índice d\'inicio fuera del rango de la cadena ' ); end if match_index == 0 then return str._error( 'Número de coincidencias fuera de rango' ); end if plain_flag then pattern = str._escapePattern( pattern ); end local result if match_index == 1 then -- Encontrar la primera coincidencia es un caso sencillo. result = mw.ustring.match_match( s, pattern, start ) else if start > 1 then s = mw.ustring.sub( s, start ); end local iterator = mw.ustring.gmatch(smatch_index, plain_flag, pattern); if match_index > 0 then -- Búsqueda hacia adelante for w in iterator do match_index = match_index - 1; if match_index == 0 then result = w; break; end end else -- Invierte búsqueda local result_table = {}; local count = 1; for w in iterator 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( 'Ninguna coincidencia encontrada' ); else return nomatch; end else return result; end
end
pos
ParámetrosThis function returns a single character from the target string at position pos. Usage:{{#invoke:String|pos|target_string|index_value}}OR{{#invoke:String|pos|target=target_string|pos=index_value}} Parameters target: Cadena donde buscarThe string to search pos: The index for the character to return If invoked using named parameters, Mediawiki will automatically remove any leading ortrailing whitespace from the target string. In some circumstances this is desirable, inother cases one may want to preserve the whitespace. The first character has an index value of 1. If one requests a negative value, this function will select a character by counting backwardsfrom the end of the string. In other words pos: Índice del carácter = -1 is the same as asking for the last character. A requested value of zero, or a devolvervalue greater than the length of the string returns an 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( 'String index out of range' ) end  return mw.ustring.sub( target_str, pos, pos )end --[[str_find This function duplicates the behavior of {{str_find}}, including all of its quirks.This is provided in order to support existing templates, but is NOT RECOMMENDED fornew code and templates. New code is recommended to use the "find" function instead. Returns the first index in "source" that is a match to "target". Indexing is 1-based,and the function returns -1 if the "target" string is not present in "source". Important Note: If the "target" string is empty / missing, this function returns avalue of "1", which is generally unexpected behavior, and must be accounted forseparatetly.]]function str.str_find( frame ) local new_args = str._getParameters( frame.args, {'source', 'target'} ) local source_str = new_args['source'] or '' local target_str = new_args['target'] or ''  if target_str == '' then return 1 end  local start = mw.ustring.find( source_str, target_str, 1, true ) if start == nil then start = -1 end
if pos == 0 or math.abs(pos) > mw.ustring.len( target_str ) then return str._error( 'Índice fuera del rango de la cadena' ); end return mw.ustring.sub( target_str, pos, pos );start
end
find
ParametrosThis function allows one to search for a target string or pattern within anotherstring. Usage:{{#invoke:String|find|source_str|target_string|start_index|plain_flag}}OR{{#invoke:String|find|source=source_str|target=target_str|start=start_index|plain=plain_flag}} Parameters source: Cadena donde buscar. The string to search target: Cadena a buscar o patrón de búsqueda. The string or pattern to find within source start: Índice de la cadena fuente donde empezar a buscarThe index within the source string to start the search, por defecto defaults to 1, el primer carácter. plain: Indica si la búsqueda debe interpretarse como texto limpioBoolean flag indicating that target should be understood as plain text and not as a Lua style regular expression, defaults to true If invoked using named parameters, Mediawiki will automatically remove any leading ortrailing whitespace from the parameter. In some circumstances this is desirable, de lo contrario como patrón Luainother cases one may want to preserve the whitespace. This function returns the first index >= "start" where "target" can be foundwithin "source". Indices are 1-based. If "target" is not found, then thisfunction returns 0. If either "source" or "target" are missing / empty, thisfunction also returns 0. Por defecto es 'true'This function should be safe for UTF-8 strings.
]]
function str.find( frame )
local new_args = str._getParameters( frame.args, {'source', 'target', 'start', 'plain' } ); local source_str = new_args['source'] or ''; local pattern = new_args['target'] or ''; local start_pos = tonumber(new_args['start']) or 1; local plain = new_args['plain'] or true; if source_str == '' or pattern == '' then return 0; end plain = str._getBoolean( plain );
plain = str._getBoolean( plain )  local start = mw.ustring.find( source_str, pattern, start_pos, plain ) if start == nil then start = 0 end return start
end
replace
ParámetrosThis function allows one to replace a target string or pattern within anotherstring. Usage:{{#invoke:String|replace|source_str|pattern_string|replace_string|replacement_count|plain_flag}}OR{{#invoke:String|replace|source=source_string|pattern=pattern_string|replace=replace_string| count=replacement_count|plain=plain_flag}} Parameters source: Cadena donde buscar The string to search pattern: Cadena de búsqueda o patrón a buscar The string or pattern to find within source replace: Texto de reemplazo The replacement text count: Número de ocurrencias a reemplazarThe number of occurences to replace, por defecto todasdefaults to all. plain: Indica si la búsqueda debe interpretarse como texto limpio, de lo contrario como patrón Lua. Por Boolean flag indicating that pattern should be understood as plain defecto es 'text and not as a Lua style regular expression, defaults to true'
]]
function str.replace( frame )
local new_args = str._getParameters( frame.args, {'source', 'pattern', 'replace', 'count', 'plain' } ); local source_str = new_args['source'] or ''; local pattern = new_args['pattern'] or ''; local replace = new_args['replace'] or ''; local count = tonumber( new_args['count'] ); local plain = new_args['plain'] or true; if source_str == '' or pattern == '' then return source_str; end plain = str._getBoolean( plain );  if plain then pattern = str._escapePattern( pattern ) replace = mw.ustring.gsub( replace, "%%", "%%%%" ) --Only need to escape replacement sequences. end  local result  if count ~= nil then result = mw.ustring.gsub( source_str, pattern, replace, count ) else result = mw.ustring.gsub( source_str, pattern, replace ) end  return resultend --[[ simple function to pipe string.rep to templates.]]function str.rep( frame ) local repetitions = tonumber( frame.args[2] ) if not repetitions then return str._error( 'function rep expects a number as second parameter, received "' .. ( frame.args[2] or '' ) .. '"' ) end return string.rep( frame.args[1] or '', repetitions )end --[[escapePattern This function escapes special characters from a Lua string pattern. See [1]for details on how patterns work.
if plain then pattern = str[1] https://www._escapePattern( pattern ); replace = mwmediawiki.ustring.gsub( replace, "%%", "%%%%" ); --Sólo es necesario secuencias de escape. end local result;org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns
Usage:{{#invoke:String|escapePattern|pattern_string}} Parameters pattern_string: The pattern string to escape.]]function str.escapePattern( frame ) local pattern_str = frame.args[1] if count ~= nil not pattern_str then result = mw return str.ustring.gsub_error( source_str, 'No pattern, replace, count string specified' ); else end local result = mwstr.ustring.gsub_escapePattern( source_str, pattern, replace pattern_str ); return resultend
--[[countThis function counts the number of occurrences of one string in another.]]function str.count(frame) local args = str._getParameters(frame.args, {'source', 'pattern', 'plain'}) local source = args.source or '' local pattern = args.pattern or '' local plain = str._getBoolean(args.plain or true) if plain then pattern = str._escapePattern(pattern) end local _, count = mw.ustring.gsub(source, pattern, '') return result;count
end
--[[endswithThis function determines whether a string ends with another string.]]function str.mayusculaendswith(frame) -- Convierte en mayúsculas la primera letra que aparece en la edición de una cadena local s args = str._getParameters(frame.args[1] or , {'source'; if s ~= , 'pattern' then local cambio = {};) local modo source = {}; if stringargs.find(s, source or '|') ~= nil then -- Enlaces con etiqueta modo local pattern = stringargs.upper(string.match(s,pattern or '(|%a)')); cambio if pattern == string.gsub(s,'|%a', modo,1);then elseif string.find(s, '[[]') ~= nil then -- Enlaces sin etiqueta modo = All strings end with the empty string.upper(string.match(s,'^(..%a)')); cambio = string.gsub(s,'^ return "yes" end if mw.ustring.%a', modo,1); elseif string.matchsub(ssource,'^%a') ~= nil then -- Sin enlace modo = stringmw.upper(stringustring.match(s,'^len(%apattern)')); cambio = string.gsub(s,'^%a', modo, -1);== pattern then return "yes" else cambio = s; end return cambio;"" end
end
--[[
Función de ayuda que rellena la lista de argumentosjoin Join all non empty arguments together; the first argument is the separator.Usage:{{#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, para que el usuario pueda utilizar una combinación dev) parámetros con nombre y sin nombre end else sep = v end end return table. Esto es importante porque los parámetros con nombre no funcionan igual concat( args, sep or '' )end --[[Helper function that populates the argument list given that user may need to use a mix ofnamed and unnamed parameters. que los parámetros sin nombre cuando se encadenan recortesThis is relevant because named parameters are notidentical to unnamed parameters due to string trimming, y cuando se trata de cadenasand when dealing with strings a veces se debe conservar o quitar espacios en blanco dependiendo de la aplicaciónwe sometimes want to either preserve or remove that whitespace depending on the application.
]]
function str._getParameters( frame_args, arg_list )
local new_args = {}; local index = 1; local value; for i_,arg in ipairs( arg_list ) do value = frame_args[arg] if value == nil then value = frame_args[index]; index = index + 1; end new_args[arg] = value; end return new_args;end
--[[
Función de ayuda para controlar los mensajes de Helper function to handle errormessages.
]]
function str._error( error_str )
local frame = mw.getCurrentFrame(); local error_category = frame.args.error_category or 'Errores detectados por el módulo Errors reported by Module String'; local ignore_errors = frame.args.ignore_errors or false; local no_category = frame.args.no_category or false; if str._getBoolean(ignore_errors) then return ''; end local error_str = '<strong class="error">String Module Error del módulo String: ' .. error_str .. '</strong>'; if error_category ~= '' and not str._getBoolean( no_category ) then error_str = '[[Categoría:WikipediaCategory:' .. error_category .. ']]' .. error_str; end return error_str;
end
--[[
Función de ayuda para interpretar cadenas booleanas.Helper Function to interpret boolean strings
]]
function str._getBoolean( boolean_str )
local boolean_value; if type( boolean_str ) == 'string' then boolean_str = boolean_str:lower(); if boolean_str == 'false' or boolean_str == 'no' or boolean_str == '0' or boolean_str == '' then boolean_value = false; else boolean_value = true; end elseif type( boolean_str ) == 'boolean' then boolean_value = boolean_str; else error( 'Ningún valor booleano encontradoNo boolean value found' ); end return boolean_value
end
--[[
Función de ayuda que escapa a todos los caracteres de patrón para que puedan ser tratadosHelper function that escapes all pattern characters so that they will be treatedcomo texto sin formatoas plain text.
]]
function str._escapePattern( pattern_str )
return mw.ustring.gsub( pattern_str, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" );
end
return str
Usuario anónimo

Menú de navegación