UNPKG

react-string-format

Version:

Formats string using string, number, and react components as paramaters

77 lines (76 loc) 2.43 kB
"use strict"; /* eslint-disable react/no-array-index-key */ Object.defineProperty(exports, "__esModule", { value: true }); exports.WhiteSpaceChar = void 0; exports.format = format; var React = require("react"); exports.WhiteSpaceChar = "&nbsp;"; function format(text) { var params = []; for (var _i = 1; _i < arguments.length; _i++) { params[_i - 1] = arguments[_i]; } var result = [text]; params.forEach(function (param, i) { result = parseAndReplace(result, param, i); }); if (result.length === 0) { return ""; } else if (result.length === 1 && typeof result[0] === "string") { return result[0]; } else { return (React.createElement(React.Fragment, null, result.map(function (x, i) { return React.createElement(React.Fragment, { key: i }, x); }))); } } function replaceWhiteSpace(text) { var result = []; var start = false; var end = false; if (text.match(/^\s+/gi)) { text = text.replace(/^\s+/gi, ""); start = true; } if (text.match(/\s+$/gi)) { text = text.replace(/\s+$/gi, ""); end = true; } if (start) { result.push(React.createElement(React.Fragment, null, "\u00A0")); } result.push(text); if (end) { result.push(React.createElement(React.Fragment, null, "\u00A0")); } return result; } function parseAndReplace(source, replaceWith, index) { var result = []; source.forEach(function (possibleText) { if (typeof possibleText === "string") { var pattern = new RegExp("\\{".concat(index, "\\}"), "gi"); if (typeof replaceWith === "string" || typeof replaceWith === "number") { result.push(possibleText.replace(pattern, "".concat(replaceWith))); } else { var splits_1 = possibleText.split(pattern); splits_1.forEach(function (splitText, i) { if (splitText) { replaceWhiteSpace(splitText).forEach(function (text) { return result.push(text); }); } // if NOT last if (i + 1 < splits_1.length) { result.push(replaceWith); } }); } } else { result.push(possibleText); } }); return result; }