Module:String: Difference between revisions
Created page with "-- <nowiki> --[[ Source: http://en.wikipedia.org/wiki/Module:String This module is intended to provide access to basic string functions. Most of the functions provided her..."
(update urls) |
imported>Unai01 (Created page with "-- <nowiki> --[[ Source: http://en.wikipedia.org/wiki/Module:String This module is intended to provide access to basic string functions. Most of the functions provided her...") |
||
| Line 1: | Line 1: | ||
-- <nowiki> | |||
--[[ | --[[ | ||
Source: http://en.wikipedia.org/wiki/Module:String | |||
This module is intended to provide access to basic string functions. | This module is intended to provide access to basic string functions. | ||
Most of the functions provided here can be invoked with named parameters, | Most of the functions provided here can be invoked with named parameters, | ||
unnamed parameters, or a mixture. If named parameters are used, Mediawiki will | unnamed parameters, or a mixture. If named parameters are used, Mediawiki will | ||
| Line 8: | Line 9: | ||
Depending on the intended use, it may be advantageous to either preserve or | Depending on the intended use, it may be advantageous to either preserve or | ||
remove such whitespace. | remove such whitespace. | ||
Global options | Global options | ||
ignore_errors: If set to 'true' or 1, any error condition will result in | ignore_errors: If set to 'true' or 1, any error condition will result in | ||
an empty string being returned rather than an error message. | an empty string being returned rather than an error message. | ||
error_category: If an error occurs, specifies the name of a category to | error_category: If an error occurs, specifies the name of a category to | ||
include with the error message. The default category is | include with the error message. The default category is | ||
[Category:Errors reported by Module String]. | [Category:Errors reported by Module String]. | ||
no_category: If set to 'true' or 1, no category will be added if an error | no_category: If set to 'true' or 1, no category will be added if an error | ||
is generated. | is generated. | ||
Unit tests for this module are available at Module:String/tests. | Unit tests for this module are available at Module:String/tests. | ||
]] | ]] | ||
local str = {} | local str = {} | ||
--[[ | --[[ | ||
len | len | ||
This function returns the length of the target string. | This function returns the length of the target string. | ||
Usage: | Usage: | ||
{{#invoke:String|len|target_string|}} | {{#invoke:String|len|target_string|}} | ||
OR | OR | ||
{{#invoke:String|len|s=target_string}} | {{#invoke:String|len|s=target_string}} | ||
Parameters | Parameters | ||
s: The string whose length to report | s: The string whose length to report | ||
If invoked using named parameters, Mediawiki will automatically remove any leading or | If invoked using named parameters, Mediawiki will automatically remove any leading or | ||
trailing whitespace from the target string. | trailing whitespace from the target string. | ||
| Line 46: | Line 47: | ||
return mw.ustring.len( s ) | return mw.ustring.len( s ) | ||
end | end | ||
--[[ | --[[ | ||
sub | sub | ||
This function returns a substring of the target string at specified indices. | This function returns a substring of the target string at specified indices. | ||
Usage: | Usage: | ||
{{#invoke:String|sub|target_string|start_index|end_index}} | {{#invoke:String|sub|target_string|start_index|end_index}} | ||
OR | OR | ||
{{#invoke:String|sub|s=target_string|i=start_index|j=end_index}} | {{#invoke:String|sub|s=target_string|i=start_index|j=end_index}} | ||
Parameters | Parameters | ||
s: The string to return a subset of | s: The string to return a subset of | ||
i: The fist index of the substring to return, defaults to 1. | 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. | 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 | 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 | 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 | counting from the end of the string. Hence, a value of -1 is the same as | ||
selecting the last character of the string. | selecting the last character of the string. | ||
If the requested indices are out of range for the given string, an error is | If the requested indices are out of range for the given string, an error is | ||
reported. | reported. | ||
| Line 75: | Line 76: | ||
local i = tonumber( new_args['i'] ) or 1; | local i = tonumber( new_args['i'] ) or 1; | ||
local j = tonumber( new_args['j'] ) or -1; | local j = tonumber( new_args['j'] ) or -1; | ||
local len = mw.ustring.len( s ); | local len = mw.ustring.len( s ); | ||
-- Convert negatives for range checking | -- Convert negatives for range checking | ||
if i < 0 then | if i < 0 then | ||
| Line 85: | Line 86: | ||
j = len + j + 1; | j = len + j + 1; | ||
end | end | ||
if i > len or j > len or i < 1 or j < 1 then | if i > len or j > len or i < 1 or j < 1 then | ||
return str._error( 'String subset index out of range' ); | return str._error( 'String subset index out of range' ); | ||
| Line 92: | Line 93: | ||
return str._error( 'String subset indices out of order' ); | return str._error( 'String subset indices out of order' ); | ||
end | end | ||
return mw.ustring.sub( s, i, j ) | return mw.ustring.sub( s, i, j ) | ||
end | end | ||
--[[ | --[[ | ||
This function implements that features of {{str sub old}} and is kept in order | This function implements that features of {{str sub old}} and is kept in order | ||
| Line 105: | Line 106: | ||
return mw.ustring.sub( frame.args.s, i + 1, len and ( i + len ) ) | return mw.ustring.sub( frame.args.s, i + 1, len and ( i + len ) ) | ||
end | end | ||
--[[ | --[[ | ||
match | match | ||
This function returns a substring from the source string that matches a | This function returns a substring from the source string that matches a | ||
specified pattern. | specified pattern. | ||
Usage: | Usage: | ||
{{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch_output}} | {{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch_output}} | ||
| Line 117: | Line 118: | ||
{{#invoke:String|match|s=source_string|pattern=pattern_string|start=start_index | {{#invoke:String|match|s=source_string|pattern=pattern_string|start=start_index | ||
|match=match_number|plain=plain_flag|nomatch=nomatch_output}} | |match=match_number|plain=plain_flag|nomatch=nomatch_output}} | ||
Parameters | Parameters | ||
s: The string to search | s: The string to search | ||
| Line 131: | Line 132: | ||
text. Defaults to false. | text. Defaults to false. | ||
nomatch: If no match is found, output the "nomatch" value rather than an error. | nomatch: If no match is found, output the "nomatch" value rather than an error. | ||
If invoked using named parameters, Mediawiki will automatically remove any leading or | If invoked using named parameters, Mediawiki will automatically remove any leading or | ||
trailing whitespace from each string. In some circumstances this is desirable, in | trailing whitespace from each string. In some circumstances this is desirable, in | ||
other cases one may want to preserve the whitespace. | other cases one may want to preserve the whitespace. | ||
If the match_number or start_index are out of range for the string being queried, then | If the match_number or start_index are out of range for the string being queried, then | ||
this function generates an error. An error is also generated if no match is found. | this function generates an error. An error is also generated if no match is found. | ||
If one adds the parameter ignore_errors=true, then the error will be suppressed and | If one adds the parameter ignore_errors=true, then the error will be suppressed and | ||
an empty string will be returned on any failure. | an empty string will be returned on any failure. | ||
For information on constructing Lua patterns, a form of [regular expression], see: | 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 | ||
* | * http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns | ||
]] | ]] | ||
function str.match( frame ) | function str.match( frame ) | ||
| Line 156: | Line 157: | ||
local match_index = math.floor( tonumber(new_args['match']) or 1 ); | local match_index = math.floor( tonumber(new_args['match']) or 1 ); | ||
local nomatch = new_args['nomatch']; | local nomatch = new_args['nomatch']; | ||
if s == '' then | if s == '' then | ||
return str._error( 'Target string is empty' ); | return str._error( 'Target string is empty' ); | ||
| Line 172: | Line 173: | ||
pattern = str._escapePattern( pattern ); | pattern = str._escapePattern( pattern ); | ||
end | end | ||
local result | local result | ||
if match_index == 1 then | if match_index == 1 then | ||
| Line 181: | Line 182: | ||
s = mw.ustring.sub( s, start ); | s = mw.ustring.sub( s, start ); | ||
end | end | ||
local iterator = mw.ustring.gmatch(s, pattern); | local iterator = mw.ustring.gmatch(s, pattern); | ||
if match_index > 0 then | if match_index > 0 then | ||
| Line 200: | Line 201: | ||
count = count + 1; | count = count + 1; | ||
end | end | ||
result = result_table[ count + match_index ]; | result = result_table[ count + match_index ]; | ||
end | end | ||
end | end | ||
if result == nil then | if result == nil then | ||
if nomatch == nil then | if nomatch == nil then | ||
| Line 215: | Line 216: | ||
end | end | ||
end | end | ||
--[[ | --[[ | ||
pos | pos | ||
This function returns a single character from the target string at position pos. | This function returns a single character from the target string at position pos. | ||
Usage: | Usage: | ||
{{#invoke:String|pos|target_string|index_value}} | {{#invoke:String|pos|target_string|index_value}} | ||
OR | |||