d96db2b2fa51dc899abb6052b8d105856813814f1a5f72a2cfc2ffb864193f797866f9d9543c4b6900b54c8b350fb5401d402c497029d7d7519919b462c396 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. 'use strict';
  2. exports.__esModule = true;
  3. exports.toUpperCaseFirst = toUpperCaseFirst;
  4. exports.equalsIgnoreCase = equalsIgnoreCase;
  5. exports.randomString = randomString;
  6. exports.isPercentValue = isPercentValue;
  7. exports.substitute = substitute;
  8. exports.stripTags = stripTags;
  9. var _mixed = require('./mixed');
  10. var _number = require('./number');
  11. /**
  12. * Convert string to upper case first letter.
  13. *
  14. * @param {String} string String to convert.
  15. * @returns {String}
  16. */
  17. function toUpperCaseFirst(string) {
  18. return string[0].toUpperCase() + string.substr(1);
  19. }
  20. /**
  21. * Compare strings case insensitively.
  22. *
  23. * @param {...String} strings Strings to compare.
  24. * @returns {Boolean}
  25. */
  26. function equalsIgnoreCase() {
  27. var unique = [];
  28. for (var _len = arguments.length, strings = Array(_len), _key = 0; _key < _len; _key++) {
  29. strings[_key] = arguments[_key];
  30. }
  31. var length = strings.length;
  32. while (length--) {
  33. var string = (0, _mixed.stringify)(strings[length]).toLowerCase();
  34. if (unique.indexOf(string) === -1) {
  35. unique.push(string);
  36. }
  37. }
  38. return unique.length === 1;
  39. }
  40. /**
  41. * Generates a random hex string. Used as namespace for Handsontable instance events.
  42. *
  43. * @return {String} Returns 16-long character random string (eq. `'92b1bfc74ec4'`).
  44. */
  45. function randomString() {
  46. function s4() {
  47. return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);
  48. }
  49. return s4() + s4() + s4() + s4();
  50. }
  51. /**
  52. * Checks if value is valid percent.
  53. *
  54. * @param {String} value
  55. * @returns {Boolean}
  56. */
  57. function isPercentValue(value) {
  58. return (/^([0-9][0-9]?%$)|(^100%$)/.test(value)
  59. );
  60. }
  61. /**
  62. * Substitute strings placed beetwen square brackets into value defined in `variables` object. String names defined in
  63. * square brackets must be the same as property name of `variables` object.
  64. *
  65. * @param {String} template Template string.
  66. * @param {Object} variables Object which contains all available values which can be injected into template.
  67. * @returns {String}
  68. */
  69. function substitute(template) {
  70. var variables = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  71. return ('' + template).replace(/(?:\\)?\[([^[\]]+)]/g, function (match, name) {
  72. if (match.charAt(0) === '\\') {
  73. return match.substr(1, match.length - 1);
  74. }
  75. return variables[name] === void 0 ? '' : variables[name];
  76. });
  77. }
  78. var STRIP_TAGS_REGEX = /<\/?\w+\/?>|<\w+[\s|/][^>]*>/gi;
  79. /**
  80. * Strip any HTML tag from the string.
  81. *
  82. * @param {String} string String to cut HTML from.
  83. * @return {String}
  84. */
  85. function stripTags(string) {
  86. string += '';
  87. return string.replace(STRIP_TAGS_REGEX, '');
  88. }