Module:String: Difference between revisions

14,977 bytes removed ,  12 years ago
Reverting until it can be figured out why this update broke Template:Strlen and Template:git
(as copied directly from en:Module:String)
(Reverting until it can be figured out why this update broke Template:Strlen and Template:git)
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