|
|
| Line 1: |
Line 1: |
| --[[
| | local p = {} |
|
| |
|
| This module is intended to provide access to basic string functions.
| | function p.length( frame ) |
| | local arg1 = frame.args[1] |
| | return string.len( arg1 ) |
| | end |
|
| |
|
| Most of the functions provided here can be invoked with named parameters,
| | function p.sub( frame ) |
| unnamed parameters, or a mixture. If named parameters are used, Mediawiki will
| | local arg1 = frame.args[1] |
| automatically remove any leading or trailing whitespace from the parameter.
| | local arg2 = tonumber( frame.args[2] ) |
| Depending on the intended use, it may be advantageous to either preserve or
| | local arg3 = tonumber( frame.args[3] ) |
| remove such whitespace.
| | if arg2 and arg3 then |
| | | local first = arg2 + 1 |
| Global options
| | local last = arg2 + arg3 |
| ignore_errors: If set to 'true' or 1, any error condition will result in
| | return string.sub( arg1, first, last ) |
| an empty string being returned rather than an error message.
| | else |
|
| | return "" |
| 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 | | end |
|
| | end |
| return mw.ustring.sub( s, i, j )
| |
| end | |
|
| |
|
| --[[ | | --[[ |
| Line 100: |
Line 23: |
| to maintain these older templates. | | to maintain these older templates. |
| ]] | | ]] |
| function str.sublength( frame ) | | function p.sublength( frame ) |
| local i = tonumber( frame.args.i ) or 0 | | local i = tonumber( frame.args.i ) or 0 |
| local len = tonumber( frame.args.len ) | | local len = tonumber( frame.args.len ) |
| Line 106: |
Line 29: |
| end | | end |
|
| |
|
| --[[
| | return p |
| |