stream-chat-react-native-core
Version:
The official React Native and Expo components for Stream Chat, a service for building chat applications
43 lines • 1.63 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.generateMarkdownText = void 0;
var _truncate = _interopRequireDefault(require("lodash/truncate"));
var _parseLinks = require("./parseLinks");
var _utils = require("../../../../utils/utils");
var generateMarkdownText = text => {
if (!text) {
return null;
}
var normalizedText = text.replace(/\uFFFC/g, ' ');
var resultText = normalizedText.trim();
var linkInfos = (0, _parseLinks.parseLinksFromText)(resultText);
for (var linkInfo of linkInfos) {
var displayLink = (0, _truncate.default)(linkInfo.raw, {
length: 200,
omission: '...'
});
var normalRegEx = new RegExp((0, _utils.escapeRegExp)(linkInfo.raw), 'g');
var markdown = `[${displayLink}](${linkInfo.url})`;
resultText = normalizedText.replace(normalRegEx, markdown);
var mentionsRegex = new RegExp(`@\\[${(0, _utils.escapeRegExp)(displayLink)}\\]\\(${(0, _utils.escapeRegExp)(linkInfo.url)}\\)`, 'g');
resultText = resultText.replace(mentionsRegex, `@${displayLink}`);
}
resultText = resultText.replace(/(```[\s\S]*?```|`.*?`)|[<"']/g, (match, code) => {
if (code) {
return code;
}
return `\\${match}`;
});
resultText = resultText.replace(/(```[\s\S]*?```|`.*?`)|\n[ ]{2,}/g, (_, code) => {
if (code) {
return code;
}
return '\n';
});
resultText = resultText.replace(/\n```/g, '\n\n```');
return resultText;
};
exports.generateMarkdownText = generateMarkdownText;
//# sourceMappingURL=generateMarkdownText.js.map