2023-03-26 23:02:57 +09:00
|
|
|
const citationRegex = /\[\^\d+?\^\]/g;
|
2023-03-09 16:09:53 -05:00
|
|
|
|
2023-03-09 18:07:36 -05:00
|
|
|
const citeText = (res, noLinks = false) => {
|
|
|
|
|
let result = res.text || res;
|
|
|
|
|
const citations = Array.from(new Set(result.match(citationRegex)));
|
|
|
|
|
if (citations?.length === 0) return result;
|
2023-03-09 16:09:53 -05:00
|
|
|
|
2023-03-09 18:07:36 -05:00
|
|
|
if (noLinks) {
|
|
|
|
|
citations.forEach((citation) => {
|
|
|
|
|
const digit = citation.match(/\d+?/g)[0];
|
2023-03-19 11:25:12 -04:00
|
|
|
// result = result.replaceAll(citation, `<sup>[${digit}](#) </sup>`);
|
2023-03-09 18:42:36 -05:00
|
|
|
result = result.replaceAll(citation, `<sup>[${digit}](#) </sup>`);
|
2023-03-09 18:07:36 -05:00
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
}
|
2023-03-09 16:09:53 -05:00
|
|
|
|
|
|
|
|
let sources = res.details.sourceAttributions;
|
2023-03-09 18:07:36 -05:00
|
|
|
if (sources?.length === 0) return result;
|
2023-03-09 16:09:53 -05:00
|
|
|
sources = sources.map((source) => source.seeMoreUrl);
|
2023-03-09 18:07:36 -05:00
|
|
|
|
|
|
|
|
citations.forEach((citation) => {
|
|
|
|
|
const digit = citation.match(/\d+?/g)[0];
|
2023-03-19 11:25:12 -04:00
|
|
|
result = result.replaceAll(citation, `<sup>[${digit}](${sources[digit - 1]}) </sup>`);
|
|
|
|
|
// result = result.replaceAll(citation, `<sup>[${digit}](${sources[digit - 1]}) </sup>`);
|
2023-03-09 18:07:36 -05:00
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return result;
|
2023-03-09 16:09:53 -05:00
|
|
|
};
|
|
|
|
|
|
2023-03-09 18:07:36 -05:00
|
|
|
module.exports = citeText;
|