Modul:String: Unterschied zwischen den Versionen

K
Changed protection level for "Module:String": request at RfP ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
Keine Bearbeitungszusammenfassung
K (Changed protection level for "Module:String": request at RfP ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite)))
Zeile 77: Zeile 77:
      
      
     local len = mw.ustring.len( s );
     local len = mw.ustring.len( s );
   
 
     -- Convert negatives for range checking
     -- Convert negatives for range checking
     if i < 0 then
     if i < 0 then
Zeile 86: Zeile 86:
     end
     end
      
      
     if i > len or j > len or i < 1 then
     if i > len or j > len or i < 1 or j < 1 then
         return str._error( 'Indexangaben für Teilzeichenkette außerhalb des Bereichs' );
         return str._error( 'String subset index out of range' );
     end
     end
     if j < i then
     if j < i then
         return str._error( 'Indexangaben für Teilzeichenkette außerhalb des Bereichs' );
         return str._error( 'String subset indices out of order' );
     end
     end
      
      
Zeile 247: Zeile 247:


     if pos == 0 or math.abs(pos) > mw.ustring.len( target_str ) then
     if pos == 0 or math.abs(pos) > mw.ustring.len( target_str ) then
         return str._error( 'Zeichenkettenindex außerhalb des Bereichs' );
         return str._error( 'String index out of range' );
     end     
     end     
      
      
Zeile 423: Zeile 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 'Fehlerberichte des Moduls String';
     local error_category = frame.args.error_category or 'Errors reported by Module String';
     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;
Zeile 468: Zeile 468:
     return mw.ustring.gsub( pattern_str, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" );
     return mw.ustring.gsub( pattern_str, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" );
end
end
function str.format_num(amount, decimal, prefix, neg_prefix)
  local str_amount,  formatted, famount, remain
  decimal = decimal or 2  -- default 2 decimal places
  neg_prefix = neg_prefix or "-" -- default negative sign
  famount = math.abs(round(amount,decimal))
  famount = math.floor(famount)
  remain = round(math.abs(amount) - famount, decimal)
        -- comma to separate the thousands
  formatted = comma_value(famount)
        -- attach the decimal portion
  if (decimal > 0) then
    remain = string.sub(tostring(remain),3)
    formatted = formatted .. "." .. remain ..
                string.rep("0", decimal - string.len(remain))
  end
        -- attach prefix string e.g '$'
  formatted = (prefix or "") .. formatted
        -- if value is negative then format accordingly
  if (amount<0) then
    if (neg_prefix=="()") then
      formatted = "("..formatted ..")"
    else
      formatted = neg_prefix .. formatted
    end
  end
  return formatted
end
function str.comma_value(amount)
  local formatted = amount
  while true do
    formatted, k = string.gsub(formatted, "^(-?%d+)(%d%d%d)", '%1.%2')
    if (k==0) then
      break
    end
  end
  return formatted
end


return str
return str
Anonymer Benutzer