string.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. /**
  2. * DevExtreme (core/utils/string.js)
  3. * Version: 19.1.16
  4. * Build date: Tue Oct 18 2022
  5. *
  6. * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED
  7. * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
  8. */
  9. "use strict";
  10. function _typeof(obj) {
  11. "@babel/helpers - typeof";
  12. return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj) {
  13. return typeof obj
  14. } : function(obj) {
  15. return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj
  16. }, _typeof(obj)
  17. }
  18. var typeUtils = require("./type");
  19. var encodeHtml = function() {
  20. var encodeRegExp = [new RegExp("&", "g"), new RegExp('"', "g"), new RegExp("'", "g"), new RegExp("<", "g"), new RegExp(">", "g")];
  21. return function(str) {
  22. return String(str).replace(encodeRegExp[0], "&amp;").replace(encodeRegExp[1], "&quot;").replace(encodeRegExp[2], "&#39;").replace(encodeRegExp[3], "&lt;").replace(encodeRegExp[4], "&gt;")
  23. }
  24. }();
  25. var splitQuad = function(raw) {
  26. switch (_typeof(raw)) {
  27. case "string":
  28. return raw.split(/\s+/, 4);
  29. case "object":
  30. return [raw.x || raw.h || raw.left, raw.y || raw.v || raw.top, raw.x || raw.h || raw.right, raw.y || raw.v || raw.bottom];
  31. case "number":
  32. return [raw];
  33. default:
  34. return raw
  35. }
  36. };
  37. var quadToObject = function(raw) {
  38. var quad = splitQuad(raw);
  39. var left = parseInt(quad && quad[0], 10);
  40. var top = parseInt(quad && quad[1], 10);
  41. var right = parseInt(quad && quad[2], 10);
  42. var bottom = parseInt(quad && quad[3], 10);
  43. if (!isFinite(left)) {
  44. left = 0
  45. }
  46. if (!isFinite(top)) {
  47. top = left
  48. }
  49. if (!isFinite(right)) {
  50. right = left
  51. }
  52. if (!isFinite(bottom)) {
  53. bottom = top
  54. }
  55. return {
  56. top: top,
  57. right: right,
  58. bottom: bottom,
  59. left: left
  60. }
  61. };
  62. var stringFormat = function() {
  63. var s = arguments[0];
  64. var values = [].slice.call(arguments).slice(1);
  65. var replaceDollarCount;
  66. var reg;
  67. var value;
  68. if (typeUtils.isFunction(s)) {
  69. return s.apply(this, values)
  70. }
  71. for (var i = 0; i < values.length; i++) {
  72. reg = new RegExp("\\{" + i + "\\}", "gm");
  73. value = values[i];
  74. if ("string" === typeUtils.type(value) && value.indexOf("$") >= 0) {
  75. replaceDollarCount = "$".replace("$", "$$").length;
  76. value = value.replace("$", 1 === replaceDollarCount ? "$$$$" : "$$")
  77. }
  78. s = s.replace(reg, value)
  79. }
  80. return s
  81. };
  82. var replaceAll = function() {
  83. var quote = function(str) {
  84. return (str + "").replace(/([+*?.[^\]$(){}><|=!:])/g, "\\$1")
  85. };
  86. return function(text, searchToken, replacementToken) {
  87. return text.replace(new RegExp("(" + quote(searchToken) + ")", "gi"), replacementToken)
  88. }
  89. }();
  90. var isEmpty = function() {
  91. var SPACE_REGEXP = /\s/g;
  92. return function(text) {
  93. return !text || !text.replace(SPACE_REGEXP, "")
  94. }
  95. }();
  96. exports.encodeHtml = encodeHtml;
  97. exports.quadToObject = quadToObject;
  98. exports.format = stringFormat;
  99. exports.replaceAll = replaceAll;
  100. exports.isEmpty = isEmpty;