Editing Module:String
From MINR.ORG WIKI
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.
The edit can be undone.
Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1: | Line 1: | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
local str = {} | local str = {} | ||
− | --[[ | + | --[====[ |
len | len | ||
Line 33: | Line 9: | ||
{{#invoke:String|len|target_string|}} | {{#invoke:String|len|target_string|}} | ||
OR | OR | ||
− | {{#invoke:String| | + | {{#invoke:String|pos|s=target_string}} |
Parameters | Parameters | ||
Line 40: | Line 16: | ||
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. | ||
− | ]] | + | ]====] |
function str.len( frame ) | function str.len( frame ) | ||
local new_args = str._getParameters( frame.args, {'s'} ); | local new_args = str._getParameters( frame.args, {'s'} ); | ||
Line 47: | Line 23: | ||
end | end | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
function str.sub( frame ) | function str.sub( frame ) | ||
− | + | return mw.ustring.sub( frame.args.s, tonumber( frame.args.i ), tonumber( frame.args.j ) ) | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
end | end | ||
− | |||
− | |||
− | |||
− | |||
function str.sublength( frame ) | function str.sublength( frame ) | ||
local i = tonumber( frame.args.i ) or 0 | local i = tonumber( frame.args.i ) or 0 | ||
Line 106: | Line 33: | ||
end | end | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
function str.match( frame ) | function str.match( frame ) | ||
− | + | return mw.ustring.match( frame.args.s, frame.args.pattern, tonumber( frame.args.i ) ) | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
end | end | ||
− | --[[ | + | --[====[ |
pos | pos | ||
Line 240: | Line 61: | ||
A requested value of zero, or a value greater than the length of the string returns an error. | A requested value of zero, or a value greater than the length of the string returns an error. | ||
− | ]] | + | ]====] |
function str.pos( frame ) | function str.pos( frame ) | ||
local new_args = str._getParameters( frame.args, {'target', 'pos'} ); | local new_args = str._getParameters( frame.args, {'target', 'pos'} ); | ||
Line 247: | Line 68: | ||
if pos == 0 or math.abs(pos) > mw.ustring.len( target_str ) then | if pos == 0 or math.abs(pos) > mw.ustring.len( target_str ) then | ||
− | return | + | return '<strong class="error">String index out of range</strong>'; |
end | end | ||
Line 253: | Line 74: | ||
end | end | ||
− | --[[ | + | --[====[ |
str_find | str_find | ||
Line 266: | Line 87: | ||
value of "1", which is generally unexpected behavior, and must be accounted for | value of "1", which is generally unexpected behavior, and must be accounted for | ||
separatetly. | separatetly. | ||
− | ]] | + | ]====] |
function str.str_find( frame ) | function str.str_find( frame ) | ||
local new_args = str._getParameters( frame.args, {'source', 'target'} ); | local new_args = str._getParameters( frame.args, {'source', 'target'} ); | ||
Line 284: | Line 105: | ||
end | end | ||
− | --[[ | + | --[====[ |
find | find | ||
Line 312: | Line 133: | ||
This function should be safe for UTF-8 strings. | This function should be safe for UTF-8 strings. | ||
− | ]] | + | ]====] |
function str.find( frame ) | function str.find( frame ) | ||
local new_args = str._getParameters( frame.args, {'source', 'target', 'start', 'plain' } ); | local new_args = str._getParameters( frame.args, {'source', 'target', 'start', 'plain' } ); | ||
Line 334: | Line 155: | ||
end | end | ||
− | --[[ | + | --[====[ |
replace | replace | ||
Line 353: | Line 174: | ||
plain: Boolean flag indicating that pattern should be understood as plain | plain: Boolean flag indicating that pattern should be understood as plain | ||
text and not as a Lua style regular expression, defaults to true | text and not as a Lua style regular expression, defaults to true | ||
− | ]] | + | ]====] |
function str.replace( frame ) | function str.replace( frame ) | ||
local new_args = str._getParameters( frame.args, {'source', 'pattern', 'replace', 'count', 'plain' } ); | local new_args = str._getParameters( frame.args, {'source', 'pattern', 'replace', 'count', 'plain' } ); | ||
Line 369: | Line 190: | ||
if plain then | if plain then | ||
pattern = str._escapePattern( pattern ); | pattern = str._escapePattern( pattern ); | ||
− | replace = | + | replace = str._escapePattern( replace ); |
end | end | ||
Line 383: | Line 204: | ||
end | end | ||
− | --[ | + | --[====[ |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Helper function that populates the argument list given that user may need to use a mix of | Helper function that populates the argument list given that user may need to use a mix of | ||
named and unnamed parameters. This is relevant because named parameters are not | named and unnamed parameters. This is relevant because named parameters are not | ||
identical to unnamed parameters due to string trimming, and when dealing with strings | identical to unnamed parameters due to string trimming, and when dealing with strings | ||
we sometimes want to either preserve or remove that whitespace depending on the application. | we sometimes want to either preserve or remove that whitespace depending on the application. | ||
− | ]] | + | ]====] |
function str._getParameters( frame_args, arg_list ) | function str._getParameters( frame_args, arg_list ) | ||
local new_args = {}; | local new_args = {}; | ||
Line 418: | Line 227: | ||
end | end | ||
− | --[ | + | --[====[ |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Helper Function to interpret boolean strings | Helper Function to interpret boolean strings | ||
− | ]] | + | ]====] |
function str._getBoolean( boolean_str ) | function str._getBoolean( boolean_str ) | ||
local boolean_value; | local boolean_value; | ||
Line 447: | Line 235: | ||
if type( boolean_str ) == 'string' then | if type( boolean_str ) == 'string' then | ||
boolean_str = boolean_str:lower(); | boolean_str = boolean_str:lower(); | ||
− | if boolean_str == 'false' or boolean_str == 'no' or boolean_str == '0 | + | if boolean_str == 'false' or boolean_str == 'no' or boolean_str == '0' then |
− | |||
boolean_value = false; | boolean_value = false; | ||
else | else | ||
Line 461: | Line 248: | ||
end | end | ||
− | --[[ | + | --[====[ |
Helper function that escapes all pattern characters so that they will be treated | Helper function that escapes all pattern characters so that they will be treated | ||
as plain text. | as plain text. | ||
− | ]] | + | ]====] |
function str._escapePattern( pattern_str ) | function str._escapePattern( pattern_str ) | ||
return mw.ustring.gsub( pattern_str, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" ); | return mw.ustring.gsub( pattern_str, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" ); |