Module:String: Difference between revisions

add nomatch option to str.match
(adds updated match support with wider parameter choices, whitespace handling, etc.)
(add nomatch option to str.match)
Line 113:
 
Usage:
{{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch_output}}
OR
{{#invoke:String|pos|s=source_string|pattern=pattern_string|start=start_index
|match=match_number|plain=plain_flag|nomatch=nomatch_output}}
 
Parameters
Line 128:
counting from the last match. Hence match = -1 is the same as requesting
the last match. Defaults to 1.
plain_flagplain: A flag indicating that the pattern should be understood as plain
text. Defaults to false.
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
Line 148 ⟶ 149:
]]
function str.match( frame )
local new_args = str._getParameters( frame.args, {'s', 'pattern', 'start', 'match', 'plain', 'nomatch'} );
local s = new_args['s'] or '';
local start = tonumber( new_args['start'] ) or 1;
Line 154 ⟶ 155:
local pattern = new_args['pattern'] or '';
local match_index = math.floor( tonumber(new_args['match']) or 1 );
local nomatch = new_args['nomatch'];
if s == '' then
Line 204 ⟶ 206:
if result == nil then
returnif str._error(nomatch 'Match== notnil found' );then
return str._error( 'Match not found' );
else
return nomatch;
end
else
return result;
Anonymous user