Module:String: Difference between revisions
add nomatch option to str.match
(Undo revision 652101 (it's breaking {Str sub}} and {{git}}) by Dragons flight (talk)) |
m>WOSlinker (add nomatch option to str.match) |
||
| Line 1: | Line 1: | ||
--[[ | |||
This module is intended to provide access to basic string functions. | |||
function | Most of the functions provided here can be invoked with named parameters, | ||
local | unnamed parameters, or a mixture. If named parameters are used, Mediawiki will | ||
local | automatically remove any leading or trailing whitespace from the parameter. | ||
local | Depending on the intended use, it may be advantageous to either preserve or | ||
if | remove such whitespace. | ||
local first = | |||
Global options | |||
return string. | ignore_errors: If set to 'true' or 1, any error condition will result in | ||
an empty string being returned rather than an error message. | |||
error_category: If an error occurs, specifies the name of a category 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. | |||
]] | |||
local str = {} | |||
--[[ | |||
len | |||
This function returns the length of the target string. | |||
Usage: | |||
{{#invoke:String|len|target_string|}} | |||
OR | |||
{{#invoke:String|len|s=target_string}} | |||
Parameters | |||
s: 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 | |||
This 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: The string to return a subset of | |||
i: The fist index of the substring to return, defaults to 1. | |||
j: The last index of the string to return, defaults to the last character. | |||
The first character of the string is assigned an index of 1. If either i or j | |||
is a negative value, it is interpreted the same as selecting a character by | |||
counting 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 is | |||
reported. | |||
]] | |||
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 | |||
return mw.ustring.sub( s, i, j ) | |||
end | |||
--[[ | |||
This function implements that features of {{str sub old}} and is kept in order | |||
to maintain these older templates. | |||
]] | |||
function str.sublength( frame ) | |||
local i = tonumber( frame.args.i ) or 0 | |||
local len = tonumber( frame.args.len ) | |||
return mw.ustring.sub( frame.args.s, i + 1, len and ( i + len ) ) | |||
end | |||
--[[ | |||
match | |||
This function returns a substring from the source string that matches a | |||
specified pattern. | |||
Usage: | |||
{{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch_output}} | |||