4ccd225d2c879c5538dbda731deb656a58878c8081d9ac8bbe864d6174e905c880032f6019b62f62d98a1326362d8612c8fc96c769161e84d66f06de8b4c60 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. /**
  2. * Checks if value of n is a numeric one
  3. * http://jsperf.com/isnan-vs-isnumeric/4
  4. * @param n
  5. * @returns {boolean}
  6. */
  7. export function isNumeric(n) {
  8. /* eslint-disable */
  9. var t = typeof n;
  10. return t == 'number' ? !isNaN(n) && isFinite(n) :
  11. t == 'string' ? !n.length ? false :
  12. n.length == 1 ? /\d/.test(n) :
  13. /^\s*[+-]?\s*(?:(?:\d+(?:\.\d+)?(?:e[+-]?\d+)?)|(?:0x[a-f\d]+))\s*$/i.test(n) :
  14. t == 'object' ? !!n && typeof n.valueOf() == 'number' && !(n instanceof Date) : false;
  15. }
  16. /**
  17. * A specialized version of `.forEach` defined by ranges.
  18. *
  19. * @param {Number} rangeFrom The number from start iterate.
  20. * @param {Number|Function} rangeTo The number where finish iterate or function as a iteratee.
  21. * @param {Function} [iteratee] The function invoked per iteration.
  22. */
  23. export function rangeEach(rangeFrom, rangeTo, iteratee) {
  24. let index = -1;
  25. if (typeof rangeTo === 'function') {
  26. iteratee = rangeTo;
  27. rangeTo = rangeFrom;
  28. } else {
  29. index = rangeFrom - 1;
  30. }
  31. while (++index <= rangeTo) {
  32. if (iteratee(index) === false) {
  33. break;
  34. }
  35. }
  36. }
  37. /**
  38. * A specialized version of `.forEach` defined by ranges iterable in reverse order.
  39. *
  40. * @param {Number} rangeFrom The number from start iterate.
  41. * @param {Number} rangeTo The number where finish iterate.
  42. * @param {Function} iteratee The function invoked per iteration.
  43. */
  44. export function rangeEachReverse(rangeFrom, rangeTo, iteratee) {
  45. let index = rangeFrom + 1;
  46. if (typeof rangeTo === 'function') {
  47. iteratee = rangeTo;
  48. rangeTo = 0;
  49. }
  50. while (--index >= rangeTo) {
  51. if (iteratee(index) === false) {
  52. break;
  53. }
  54. }
  55. }
  56. /**
  57. * Calculate value from percent.
  58. *
  59. * @param {Number} value Base value from percent will be calculated.
  60. * @param {String|Number} percent Can be Number or String (eq. `'33%'`).
  61. * @returns {Number}
  62. */
  63. export function valueAccordingPercent(value, percent) {
  64. percent = parseInt(percent.toString().replace('%', ''), 10);
  65. percent = parseInt(value * percent / 100, 10);
  66. return percent;
  67. }