Utils.ts 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. export class Utils {
  2. /**
  3. * @type {RegExp}
  4. */
  5. private static hexRepetitiveZerosRegExp: RegExp = new RegExp('^(0{2,})+(?!$)', '');
  6. /**
  7. * @param array
  8. * @param searchElement
  9. * @returns {boolean}
  10. */
  11. public static arrayContains (array: any[], searchElement: any): boolean {
  12. return array.indexOf(searchElement) >= 0;
  13. }
  14. /**
  15. * @param array
  16. * @param times
  17. * @param reverse
  18. * @returns any[]
  19. */
  20. public static arrayRotate (array: any[], times: number, reverse: boolean = false): any[] {
  21. if (times < 0) {
  22. return;
  23. }
  24. let newArray: any[] = array,
  25. temp: any;
  26. while (times--) {
  27. if (!reverse) {
  28. temp = newArray.pop();
  29. newArray.unshift(temp);
  30. } else {
  31. temp = newArray.shift();
  32. newArray.push(temp);
  33. }
  34. }
  35. return newArray;
  36. }
  37. /**
  38. * @param dec
  39. * @returns {string}
  40. */
  41. public static decToHex(dec: number): string {
  42. return (dec + Math.pow(16, 6)).toString(16).substr(-6).replace(Utils.hexRepetitiveZerosRegExp, '');
  43. }
  44. /**
  45. * @param min
  46. * @param max
  47. * @returns {number}
  48. */
  49. public static getRandomInteger(min: number, max: number): number {
  50. return Math.floor(Math.random() * (max - min + 1)) + min;
  51. }
  52. /**
  53. * @param length
  54. * @returns any
  55. */
  56. public static getRandomVariableName (length: number = 6): string {
  57. const rangeMinInteger: number = 10000,
  58. rangeMaxInteger: number = 99999999,
  59. prefix: string = '_0x';
  60. return `${prefix}${(Utils.decToHex(Utils.getRandomInteger(rangeMinInteger, rangeMaxInteger))).substr(0, length)}`;
  61. }
  62. /**
  63. * @param number
  64. * @returns {boolean}
  65. */
  66. public static isInteger (number: number): boolean {
  67. return number % 1 === 0;
  68. }
  69. /**
  70. * @param obj
  71. * @returns {T}
  72. */
  73. public static strEnumify <T extends {[prop: string]: ''|string}> (obj: T): T {
  74. return obj;
  75. }
  76. /**
  77. * @param string
  78. * @returns {string}
  79. */
  80. public static stringToUnicode (string: string): string {
  81. return `'${string.replace(/[\s\S]/g, (escape: string): string => {
  82. return `\\u${('0000' + escape.charCodeAt(0).toString(16)).slice(-4)}`;
  83. })}'`;
  84. }
  85. }