Advertisement
stuppid_bot

Разные функции

Dec 18th, 2013
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Константы
  2. SECOND = 1000;
  3. MINUTE = 60000;
  4. HOUR = 3600000;
  5. DAY = 86400000;
  6. WEEK = 604800000;
  7. DEG2RAD = Math.PI / 180;
  8.  
  9. /**
  10.  * Экранирует символы: \, ', ".
  11.  * @param {string} str
  12.  * @return {string}
  13.  */
  14. function addSlashes(str)
  15. {
  16.     return str.replace(/([\\'"])/g, '\\$1');
  17. }
  18.  
  19. /**
  20.  * Обратная функция для addSlashes.
  21.  * @param {string} str
  22.  * @return {string}
  23.  */
  24. function stripSlashes(str)
  25. {
  26.     return str.replace(/\\([\\'"])/g, '$1');
  27. }
  28.  
  29. /**
  30.  * Заменяет на HTML-сущности спецсимволы: &, <, >, ".
  31.  * @param {string} str
  32.  * @return {string}
  33.  */
  34. function escapeHTML(str)
  35. {
  36.     return str.replace(/[&"<>]/g, function (x) {
  37.         return '&' + {'&': 'amp', '"': 'quot', '<': 'lt', '>': 'gt'}[x] + ';';
  38.     });
  39. }
  40.  
  41. /**
  42.  * Возвращает случайное число с дробной частью.
  43.  * @param {number} min Минимальное значение.
  44.  * @param {number} max Максимальное значение.
  45.  * @return {number} Случайное число.
  46.  **/
  47. function rand(min, max)
  48. {
  49.     return Math.random() * (max - min + 1) + min;  
  50. }
  51.  
  52. /**
  53.  * Возвращает случайное число без дробной частью.
  54.  * @param {number} min Минимальное значение.
  55.  * @param {number} max Максимальное значение.
  56.  * @return {number} Случайное число.
  57.  **/
  58. function randInt(min, max)
  59. {
  60.     return Math.floor(rand(min, max));
  61. }
  62.  
  63. /**
  64.  * Возвращает случайный элемент массива.
  65.  * @param {array} arr
  66.  * @return {object} Случайный элемент массива.
  67.  **/
  68. function randElem(arr)
  69. {
  70.     return arr[randInt(0, arr.length - 1)];
  71. }
  72.  
  73. /**
  74.  * Генерирует случайную строку.
  75.  * @param {number} len Длина строки. По-умолчанию 8 символов.
  76.  * @param {string} chars Набор символов. По-умолчанию используются цифры и ASCII буквы в нижнем регистре.
  77.  * @return {string}
  78.  **/
  79. function randStr(len, chars)
  80. {
  81.     if (len == undefined)  {
  82.         len = 8;
  83.     }
  84.     if (chars == undefined) {
  85.         chars = '1234567890abcdefghijklmnopqrstuvwxyz';
  86.     }
  87.     var ret = '';
  88.     var last = chars.length - 1;
  89.     for (var i = 0; i < len; ++i) {
  90.         ret += chars.charAt(randInt(0, last));
  91.     }
  92.     return ret;
  93. }
  94.  
  95. /**
  96.  * Перемешивает элементы массива.
  97.  * @param {array} arr Исходный массив.
  98.  * @return {array} Новый массив.
  99.  **/
  100. function shuffle(arr)
  101. {
  102.     return arr.sort(function () {
  103.         return 0.5 > Math.random();
  104.     });
  105. }
  106.  
  107. /**
  108.  * Парсит cookie строку и возвращает объект.
  109.  * @param {string} cookie
  110.  * @return {object}
  111.  **/
  112. function parseCookie(cookie)
  113. {
  114.     if (cookie == undefined) {
  115.         cookie = document.cookie;
  116.     }
  117.     var parts = cookie.split(';');
  118.     var part, pos, k, v;
  119.     var ret = {};
  120.     for (var i = 0; i < parts.length; ++i) {
  121.         part = parts[i].trim();
  122.         pos = part.indexOf('=');
  123.         if (pos > 0) {
  124.             k = decodeURIComponent(part.substr(0, pos));
  125.             v = decodeURIComponent(part.substr(pos + 1));
  126.             ret[k] = v;
  127.         }
  128.     }
  129.     return ret;
  130. }
  131.  
  132. /**
  133.  * Устанавливает cookie.
  134.  * @param {string} name Имя.
  135.  * @param {string} value Значение.
  136.  * @param {number} days Количество дней.
  137.  **/
  138. function setCookie(name, value, days)
  139. {
  140.     document.cookie = encodeURIComponent(name) + '=' + encodeURIComponent(value) + '; Expires=' + new Date(new Date().getTime() + days * 86400000).toUTCString();
  141. }
  142.  
  143. /**
  144.  * Удаляет cookie.
  145.  * @param {string} name Имя.
  146.  **/
  147. function deleteCookie(name)
  148. {
  149.     setCookie(name, '', -1);
  150. }
  151.  
  152. /**
  153.  * Экранирует специальные символы, используемые в регулярном выражении.
  154.  * @param {string} str
  155.  * @return {string}
  156.  */
  157. function regExpEscape(str) {
  158.     return str.replace(/([.?*+^$[\]\\(){}|-])/g, '\\$1');
  159. }
  160.  
  161. /**
  162.  * Сохраняет файл по ссылке под определенным именем.
  163.  * @param {string} name Имя сохраняемого файла.
  164.  * @param {string} url Путь до файла на сервере либо Data URI.
  165.  */
  166. function saveFile(name, url)
  167. {
  168.     var link = document.createElement('a');
  169.     link.setAttribute('download', name);
  170.     link.href = url;
  171.     link.onclick = function () {
  172.         document.body.removeChild(this);
  173.     };
  174.     link.style.display = 'none';  
  175.     document.body.appendChild(link);
  176.     link.click();
  177. }
  178.  
  179. /**
  180.  * Парсит url и возвращает объект.
  181.  * @param {string} url Путь до файла на сервере.
  182.  * @return {object}
  183.  */
  184. function parseURL(url)
  185. {      
  186.     var link = document.createElement('a');
  187.     link.href = url;
  188.     var obj = {
  189.         hash: '',
  190.         host: '',
  191.         hostname: '',
  192.         href: '',
  193.         origin: '',
  194.         pathname: '',
  195.         port: '',
  196.         protocol: '',
  197.         search: ''
  198.     };
  199.     for (var i in obj) {
  200.         obj[i] = link[i];
  201.     }
  202.     return obj;
  203. }
  204.  
  205. /**
  206.  * Возвращает изображение с холста в виде Blob.
  207.  * @param {HTMLCanvasElement} canvas
  208.  * @param {string} MIME-тип в который хотим преобразовать изображение на холсте.
  209.  * @param {number} quality Качество JPEG-изображения, число с плавающей точкой в диапазоне от 0 до 1.
  210.  * @return {Blob}
  211.  */
  212. function canvasToBlob(canvas, type, quality)
  213. {
  214.     var data = canvas.toDataURL(type, quality);
  215.     data = atob(data.substr(data.indexOf(',') + 1));
  216.     var i = data.length;
  217.     var arr = new Uint8Array(i);
  218.     while (i--) {
  219.         arr[i] = data.charCodeAt(i);
  220.     }
  221.     return new Blob([arr], {type: type});
  222. }
  223.  
  224. /**
  225.  * "Переворачивает" строку.
  226.  * @param {string} str
  227.  * @return {string}
  228.  **/
  229. function reverseStr(str)
  230. {
  231.     return str.split(/|/).reverse().join('');
  232. }
  233.  
  234. /**
  235.  * Повторяет строку n-раз.
  236.  * @param {string} str
  237.  * @param {number} n Сколько раз повторить строку.
  238.  * @return {string}
  239.  **/
  240. function repeatStr(str, n)
  241. {
  242.     return new Array(++n).join(str);
  243. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement