stuppid_bot

common.js

Apr 10th, 2013
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function rand(min, max) {
  2.     return min + Math.floor( ++max * Math.random() );
  3. }
  4.  
  5. function shuffle(arr) {
  6.     var i = 0, j, swap, len = arr.length;
  7.  
  8.     while (i < len) {
  9.         j = Math.floor( Math.random() * len );
  10.         swap = arr[j];
  11.         arr[j] = arr[i];
  12.         arr[i++] = swap;
  13.     }
  14. }
  15.  
  16. /**
  17.  * Возвращает размер в байтах в понятном для человека формате.
  18.  *
  19.  * @param size размер в байтах, целое число
  20.  * @param std стандарт, 'SI' | 'IEC'
  21.  * @return string
  22.  */
  23. function formatSize(size, std) {
  24.     if (std) {
  25.         std = std.toLowerCase();
  26.     }
  27.  
  28.     var i = 0,
  29.         base = std == 'si' ? 1000 : 1024,
  30.         prefixes = ' KMGTPEZY';
  31.    
  32.     if (size < 1) {
  33.         return 0;
  34.     }
  35.     else if (size >= base) {
  36.         i = Math.floor( Math.log(size) / Math.log(base) );
  37.        
  38.         if (i >= prefixes.length) {
  39.             return 'N/A';
  40.         }
  41.        
  42.         size = ( size / Math.pow(base, i) ).toFixed(2) * 1 + ' ';
  43.     }
  44.    
  45.     return size + prefixes[i] + ( std == 'iec' && i ? 'i' : '' ) + 'B';
  46. }
  47.  
  48. /**
  49.  * Возвращает продолжительность времени в формате Ч{1,}:М{2}:С{2} либо М{1,2}:С{2}.
  50.  *
  51.  * @param ms миллисекунды
  52.  * @return string
  53.  */
  54. function duration(ms) {
  55.     var hours = ms / 3600000,
  56.         minutes = hours % 1 * 60,
  57.         seconds = Math.round(minutes % 1 * 60);
  58.     minutes = Math.floor(minutes);
  59.     return (hours >= 1 ? Math.floor(hours) + ':' : '') + (hours >= 1 && minutes < 10 ? '0' + minutes : minutes) + ':' + (seconds < 10 ? '0' + seconds : seconds);
  60. }
  61.  
  62. /**
  63.  * Склоняет слово в зависимости от количества.
  64.  *
  65.  * @param count количество
  66.  * @param base основа слова
  67.  * @param ending1 окончание для ед.ч.
  68.  * @param ending2 окончание для мн.ч.
  69.  * @param ending3 еще одно окончание для мн.ч., если не задано, то слово
  70.  * склоняется как в английском
  71.  * @return string
  72.  */
  73. function pluralize(count, base, ending1, ending2, ending3) {
  74.     base = count + ' ' + base;
  75.    
  76.     if (ending3 === undefined) {
  77.         return base + ( count == 1? ending1 : ending2 );
  78.     }
  79.    
  80.     count %= 100;
  81.     count = count > 20 ? count % 10 : count;
  82.     return base + ( count == 0 || count > 4 ? ending3 : count > 1 ? ending2 : ending1 );
  83. }
  84.  
  85. /**
  86.  * Возвращает продолжительность времени словами.
  87.  *
  88.  * @param ms миллисекунды
  89.  * @return string
  90.  */
  91. function durationWords(ms) {
  92.     // годов и месяцев нет, так как они имееют разную длительность
  93.     var weeks = ms / 604800000,
  94.         days = weeks % 1 * 7,
  95.         hours = days % 1 * 24,
  96.         minutes = hours % 1 * 60,
  97.         seconds = minutes % 1 * 60;
  98.    return ( weeks >= 1 ? pluralize( Math.floor(weeks), 'недел', 'я', 'и', 'ь' )  + ' ' : '' )  
  99.        + ( days >= 1 ? pluralize( Math.floor(days), 'д', 'ень', 'ня', 'ней' )  + ' ' : '' )
  100.        + ( hours >= 1 ? pluralize( Math.floor(hours), 'час', '', 'а', 'ов' ) + ' ' : '' )
  101.        + ( minutes >= 1 ? pluralize( Math.floor(minutes), 'минут', 'а', 'ы', '' ) + ' ' : '' )
  102.        + pluralize( Math.round(seconds), 'секунд', 'а', 'ы', '');
  103. }
Advertisement
Add Comment
Please, Sign In to add comment