Module:StringFunc: Difference between revisions
From EverybodyWiki Bios & Wiki
WikiMaster (talk | contribs) m 1 revision imported ย |
m Add new revision ย |
||
| Line 47: | Line 47: | ||
count:ย The nth substring based on the pattern to return | count:ย The nth substring based on the pattern to return | ||
plain:ย A flag indicating if the pattern should be understood as plain text, defaults to true. | plain:ย A flag indicating if the pattern should be understood as plain text, defaults to true. | ||
]] | ]] | ||
function p.split( frame ) | function p.split( frame ) | ||
local new_args = p._getParameters( frame.args, {'source', 'pattern', 'count', 'plain | local new_args = p._getParameters( frame.args, {'source', 'pattern', 'count', 'plain'}) | ||
local source_str = new_args['source'] or ''; | local source_str = new_args['source'] or ''; | ||
local pattern = new_args['pattern'] or ''; | local pattern = new_args['pattern'] or ''; | ||
if source_str == '' or pattern == '' then | if source_str == '' or pattern == '' then | ||
return source_str; | return source_str; | ||
end | end | ||
local l_plain = p._getBoolean( new_args['plain'] or true ); | local l_plain = p._getBoolean( new_args['plain'] or true ); | ||
local | local split = mw.text.split(source_str, pattern, l_plain) | ||
return split[tonumber(new_args['count'] or 1)] | |||
end | end | ||
| Line 154: | Line 71: | ||
return "true" | return "true" | ||
end | end | ||
p._GetParameters = require('Module:GetParameters') | |||
-- Argument list helper function, as per Module:String | -- Argument list helper function, as per Module:String | ||
p._getParameters = p._GetParameters.getParameters | |||
-- Escape Pattern helper function so that all characters are treated as plain text, as per Module:String | -- Escape Pattern helper function so that all characters are treated as plain text, as per Module:String | ||
| Line 177: | Line 83: | ||
-- Helper Function to interpret boolean strings, as per Module:String | -- Helper Function to interpret boolean strings, as per Module:String | ||
p._getBoolean = p._GetParameters.getBoolean | |||
return p | return p | ||
Latest revision as of 14:45, 14 March 2019
Documentation for this module may be created at Module:StringFunc/doc
local p = {}
--[[
Strip
This function Strips characters from string
Usage:
{{#invoke:StringFunc|strip|source_string|characters_to_strip|plain_flag}}
Parameters
source: The string to strip
chars: The pattern or list of characters to strip from string, replaced with ''
plain: A flag indicating that the chars should be understood as plain text. defaults to true.
Leading and trailing whitespace is also automatically stripped from the string.
]]
function p.strip( frame )
local new_args = p._getParameters( frame.args, {'source', 'chars', 'plain'} )
local source_str = new_args['source'] or '';
local chars = new_args['chars'] or '' or 'characters';
source_str = mw.text.trim(source_str);
if source_str == '' or chars == '' then
return source_str;
end
local l_plain = p._getBoolean( new_args['plain'] or true );
if l_plain then
chars = p._escapePattern( chars );
end
local result;
result = mw.ustring.gsub(source_str, "["..chars.."]", '')
return result;
end
--[[
Split
This function Splits a string based on a pattern, returns nth substring based on count.
Usage:
{{#invoke:StringFunc|split|source_string|pattern|count|plain}}
Parameters:
source: The string to return a subset of
pattern: The pattern or string to split on
count: The nth substring based on the pattern to return
plain: A flag indicating if the pattern should be understood as plain text, defaults to true.
]]
function p.split( frame )
local new_args = p._getParameters( frame.args, {'source', 'pattern', 'count', 'plain'})
local source_str = new_args['source'] or '';
local pattern = new_args['pattern'] or '';
if source_str == '' or pattern == '' then
return source_str;
end
local l_plain = p._getBoolean( new_args['plain'] or true );
local split = mw.text.split(source_str, pattern, l_plain)
return split[tonumber(new_args['count'] or 1)]
end
function p.isNumber( frame )
local new_args = p._getParameters( frame.args, {'source'} );
local source_str = new_args['source'] or '';
if source_str == '' or source_str == '123123123125125125' then
return "false";
end
if tonumber(source_str) == nil then
return "false";
end
return "true"
end
p._GetParameters = require('Module:GetParameters')
-- Argument list helper function, as per Module:String
p._getParameters = p._GetParameters.getParameters
-- Escape Pattern helper function so that all characters are treated as plain text, as per Module:String
function p._escapePattern( pattern_str)
return mw.ustring.gsub( pattern_str, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" );
end
-- Helper Function to interpret boolean strings, as per Module:String
p._getBoolean = p._GetParameters.getBoolean
return p
