יחידה:String: הבדלים בין גרסאות בדף

מ Changed protection level for "Module:String": request at RfP ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
מ 16 גרסאות של הדף wikipedia:he:יחידה:String יובאו
 
(16 גרסאות ביניים של 6 משתמשים אינן מוצגות)
שורה 383: שורה 383:
end
end


--[[  
--[[
    simple function to pipe string.rep to templates.
"Reverse" reverses a string, a'la string.reverse()
]]
]]
str.reverse = function( frame )
    local tab = mw.text.split( frame.args[1] or '', '' )
    local restab = {}
    for i = #tab, 1, -1 do table.insert( restab, tab[i] ) end
    return table.concat( restab )
end


function str.rep( frame )
str['היפוך'] = str.reverse
    local repetitions = tonumber( frame.args[2] )
    if not repetitions then
        return str._error( 'function rep expects a number as second parameter, received "' .. ( frame.args[2] or '' ) .. '"' )
    end
    return string.rep( frame.args[1] or '', repetitions )
end


--[[
--[[
שורה 423: שורה 423:
function str._error( error_str )
function str._error( error_str )
     local frame = mw.getCurrentFrame();
     local frame = mw.getCurrentFrame();
     local error_category = frame.args.error_category or 'Errors reported by Module String';
     local error_category = frame.args.error_category or 'שגיאות טיפול במחרוזת';
     local ignore_errors = frame.args.ignore_errors or false;
     local ignore_errors = frame.args.ignore_errors or false;
     local no_category = frame.args.no_category or false;
     local no_category = frame.args.no_category or false;
שורה 433: שורה 433:
     local error_str = '<strong class="error">String Module Error: ' .. error_str .. '</strong>';
     local error_str = '<strong class="error">String Module Error: ' .. error_str .. '</strong>';
     if error_category ~= '' and not str._getBoolean( no_category ) then
     if error_category ~= '' and not str._getBoolean( no_category ) then
        error_str = '[[Category:' .. error_category .. ']]' .. error_str;
    if mw.title.getCurrentTitle().namespace ~= 10 then
        error_str = '[[Category:' .. error_category .. ']]' .. error_str;
        end
     end         
     end         
      
      
שורה 467: שורה 469:
function str._escapePattern( pattern_str )
function str._escapePattern( pattern_str )
     return mw.ustring.gsub( pattern_str, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" );
     return mw.ustring.gsub( pattern_str, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" );
end
--[[
contains_any
This function returns the first matched element or empty string
Usage:
{{#invoke:String|contains_any|string|search1|search2|search3...}}
Parameters
    1: string
    2...: strings to search within the first string
]]
function str.contains_any( frame )
for i,v in pairs(frame.args) do
if i>1 then
local m=mw.ustring.find( frame.args[1], v, 0, true)
if m then
    return v
    end
end
    end
    return
end
--[[
contains_any_csv
This function returns the first matched element or empty string.
Usage:
{{#invoke:String|contains_any_csv|string|search1,search2,search3}}
Parameters
    1: string
    2: comma seperated list of strings to search within the first string
]]
function str.contains_any_csv( frame )
for word in mw.ustring.gmatch(frame.args[2], '([^,]+)') do
local m=mw.ustring.find( frame.args[1], word, 0, true)
if m then
    return word
  end
    end
    return
end
str.rep = function( frame )
local strval, repval = frame.args[1] or '', tonumber( frame.args[2] )
if not repval then return '' end
return string.rep( strval, repval )
end
str.join = function(frame)
local res = {}
local sep = ', '
for k,v in pairs(frame.args) do
if k=='sep' then
sep = v
else
if #v>0 then -- avoid empty string
table.insert(res, v)
end
end
end
return table.concat( res, sep)
end
str.encode = function(frame)
return mw.text.encode( frame.args[1] or "" )
end
str["קידוד"] = str.encode
str['מיצוי מספר'] = function(frame)
local s = frame.args[1]
local def = frame.args[2] or ''
if not s then return def end
local int, frac = s:match('[^%d.-]*(%-?[%d,]*)(%.%d+)')
if int or frac then
int = string.gsub(int or '', ',', '') -- remove commas
frac = frac or ''
return int .. frac
end
int = s:match('[^%d.-]*(%-?[%d,]*)')
int = int and string.gsub(int or '', ',', '')
return int or def
end
end


return str
return str