Changes

Jump to: navigation, search

Module:String

2,745 bytes added, 19:06, 24 February 2013
improves commenting, adds whitespace and error handling to sub, improvements to error handling generally.
--[[
 
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 will
automatically remove any leading or trailing whitespace from the parameter.
Depending on the intended use, it may be advantageous to either preserve or
remove 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.
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]. If set to an empty
string, no category will be added during an error.
]]
 
local str = {}
--[====[
len
{{#invoke:String|len|target_string|}}
OR
{{#invoke:String|poslen|s=target_string}}
Parameters
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'} );
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 )
return mw.ustringlocal new_args = str.sub_getParameters( frame.args., { 's', 'i', 'j' } ); local s = new_args['s'] or ''; local i = tonumber( new_args['i'] ) or 1; local j = tonumber( framenew_args['j'] ) or -1; local len = mw.argsustring.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 j < i then return str._error( 'String subset indices out of order' ), tonumber; end if i > len or j > len or i < 1 or j < 1 then return str._error( frame'String subset index out of range' ); end return mw.argsustring.sub( s, i, j ) )
end
end
--[====[
pos
A requested value of zero, or a value greater than the length of the string returns an error.
]====]
function str.pos( frame )
local new_args = str._getParameters( frame.args, {'target', 'pos'} );
if pos == 0 or math.abs(pos) > mw.ustring.len( target_str ) then
return str._error( '<strong class="error">String index out of range</strong>');
end
end
--[====[
str_find
value of "1", which is generally unexpected behavior, and must be accounted for
separatetly.
]====]
function str.str_find( frame )
local new_args = str._getParameters( frame.args, {'source', 'target'} );
end
--[====[
find
This function should be safe for UTF-8 strings.
]====]
function str.find( frame )
local new_args = str._getParameters( frame.args, {'source', 'target', 'start', 'plain' } );
end
--[====[
replace
plain: Boolean flag indicating that pattern should be understood as plain
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' } );
end
--[====[
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
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.
]====]
function str._getParameters( frame_args, arg_list )
local new_args = {};
end
--[[Helper function to handle error messages.]]function str._error( error_str ) local frame =mw.getCurrentFrame(); local error_category =frame.args.error_category or 'Errors reported by Module String'; local ignore_errors =frame.args.ignore_errors or false; if str._getBoolean(ignore_errors) then return ''; end local error_str ='<strong class="error">String Module Error: ' .. error_str .. '</strong>'; if error_category ~= '' then error_str = '[[Category:' .. error_category .. ']]' .. error_str; end return error_str;end --[[
Helper Function to interpret boolean strings
]====]
function str._getBoolean( boolean_str )
local boolean_value;
end
--[====[
Helper function that escapes all pattern characters so that they will be treated
as plain text.
]====]
function str._escapePattern( pattern_str )
return mw.ustring.gsub( pattern_str, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" );
Anonymous user

Navigation menu