/** @format */ | |
function removeTag(txt) { | |
txt = txt.replace(/<<</g, " ").replace(/>>>/g, " "); | |
txt = txt.replace(/<</g, "").replace(/>>/g, ""); | |
return txt; | |
} | |
// function uniteBrokenWords(txt) { | |
// const regex = /-\n/g; | |
// const unitedText = txt.replace(regex, ""); | |
// return unitedText; | |
// } | |
// function cleanDoc(txt) { | |
// try { | |
// txt = removeTag(txt); | |
// //unisce le parole spezzate a di fine riga | |
// txt = txt.replace(/-\n/g, ""); | |
// // Rimuove caratteri non stampabili specifici | |
// const charsRm = /[\u00AD\u200B\u200C\u200D\u2060\uFEFF]/g; | |
// txt = txt.replace(charsRm, ""); | |
// // Sostituisce spazi non standard e altri caratteri con uno spazio | |
// const charsSrp = /[\u00A0\u2000-\u200A\u202F\u205F\u3000\t\r\f\v]/g; | |
// txt = txt.replace(charsSrp, " "); | |
// // Mantieni le sequenze di escape comuni | |
// txt = txt.replace(/\\([nrtfb])/g, "$1"); | |
// // Mantieni le sequenze Unicode | |
// txt = txt.replace(/\\(u[0-9a-fA-F]{4}|x[0-9a-fA-F]{2})/g, "$1"); | |
// // Mantieni i backslash nei path di file | |
// txt = txt.replace(/\\([a-zA-Z]:\\|\\\\[a-zA-Z0-9_]+\\)/g, "\\\\$1"); | |
// // Rimuovi tutti gli altri backslash | |
// txt = txt.replace(/\\/g, ""); | |
// // Uniforma i caratteri di quotazione | |
// txt = txt.replace(/“/g, '"').replace(/”/g, '"'); | |
// // Rimuove spazi prima della punteggiatura | |
// txt = txt.replace(/ +([.,;:!?])/g, "$1"); | |
// // Rimuove linee vuote multiple | |
// txt = txt.replace(/\n\s*\n/g, "\n\n"); | |
// txt = txt.replace(/\n{3,}/g, "\n\n"); | |
// // Rimuove spazi multipli | |
// txt = txt.replace(/ +/g, " "); | |
// return txt.trim(); | |
// } catch (e) { | |
// console.error(e); | |
// return "Errore di codifica del documento"; | |
// } | |
// } | |
function cleanDoc(s) { | |
try { | |
s = removeTag(s); | |
// Unisce le parole divise dal trattino a fine riga | |
s = s.replace(/(\w+)-\s*\n(\w+)/g, '$1$2'); | |
// Rimuove caratteri non stampabili specifici | |
const charsRm = /[\u00AD\u200B\u200C\u200D\u2060\uFEFF\u0008]/g; | |
s = s.replace(charsRm, ''); | |
// Sostituisce spazi non standard e altri caratteri con uno spazio | |
const charsSrp = /[\u00A0\u2000-\u200A\u202F\u205F\u3000\t\r\f\v]/g; | |
s = s.replace(charsSrp, ' '); | |
// Mantieni le sequenze di escape comuni | |
s = s.replace(/\\([nrtfb])/g, '$1'); | |
// Mantieni le sequenze Unicode | |
s = s.replace(/\\(u[0-9a-fA-F]{4}|x[0-9a-fA-F]{2})/g, '$1'); | |
// Mantieni i backslash nei path di file | |
s = s.replace(/\\([a-zA-Z]:\\|\\\\[a-zA-Z0-9_]+\\)/g, '\\$1'); | |
// Rimuovi tutti gli altri backslash | |
s = s.replace(/\\/g, ''); | |
// Uniforma i caratteri di quotazione | |
s = s.replace('“', '"').replace('”', '"'); | |
// Rimpiazza newline | |
s = s.replace(/\n/g, ' '); | |
// Rimuove spazi prima della punteggiatura | |
s = s.replace(/ +([.,;:!?])/g, '$1'); | |
// Divide il testo in frasi | |
const sentences = s.split(/(?<=[.?!])\s+/); | |
const minLen = 5; | |
s = sentences.filter(sentence => sentence.trim().length >= minLen).map(sentence => sentence.trim()).join('\n'); | |
// Rimuove spazi multipli | |
s = s.replace(/ +/g, ' '); | |
return s.trim(); | |
} catch (e) { | |
console.error(e); | |
return "Errore di codifica del documento"; | |
} | |
} | |
function cleanResponse(s) { | |
try { | |
s=removeTag(s); | |
// Rimuove caratteri non stampabili specifici | |
const charsRm = /[\u00AD\u200B\u200C\u200D\u2060\uFEFF]/g; | |
s = s.replace(charsRm, ""); | |
// Sostituisce spazi non standard e altri caratteri con uno spazio | |
const charsSrp = /[\u00A0\u2000-\u200A\u202F\u205F\u3000\t\r\f\v]/g; | |
s = s.replace(charsSrp, " "); | |
// Mantieni le sequenze di escape comuni | |
s = s.replace(/\\([nrtfb])/g, "$1"); | |
// Mantieni le sequenze Unicode | |
s = s.replace(/\\(u[0-9a-fA-F]{4}|x[0-9a-fA-F]{2})/g, "$1"); | |
// Mantieni i backslash nei path di file | |
s = s.replace(/\\([a-zA-Z]:\\|\\\\[a-zA-Z0-9_]+\\)/g, "\\\\$1"); | |
// Rimuovi tutti gli altri backslash | |
s = s.replace(/\\/g, ""); | |
// Sostituisce le sequenze di più di due newline con due newline | |
s = s.replace(/\n{3,}/g, "\n\n"); | |
// unifica spazi multipli | |
s = s.replace(/ +/g, " "); | |
return s.trim(); | |
} catch (e) { | |
console.error(e); | |
return `Errore di codifica nella risposta\n${e}`; | |
} | |
} | |
function cleanOut(txt) { | |
// Formatta gli elenchi puntati per una migliore leggibilità | |
// txt = txt.replace(/^(\s*[-*•])(\s*)/gm, "\n$1 "); | |
// Formatta gli elenchi numerati per una migliore leggibilità | |
// txt = txt.replace(/^(\s*\d+\.)(\s*)/gm, "\n$1 "); | |
// Aggiunge una riga vuota prima e dopo i blocchi di codice | |
// txt = txt.replace(/(```[\s\S]*?```)/g, "\n\n$1\n\n"); | |
// Aggiunge un'andata a capo dopo ogni punto, eccetto quando seguito da newline o fine stringa | |
// txt = txt.replace(/\.(?!\n|$)/g, ".\n"); | |
// Sostituisce le sequenze di più di due newline con due newline | |
txt = txt.replace(/\n{3,}/g, "\n\n"); | |
// Rimuove gli spazi bianchi extra alla fine di ogni riga | |
// txt = txt.replace(/ +/g, " "); | |
// txt = txt.replace(/\s+$/gm, ""); | |
return txt; | |
} | |
// <<<doc_name>>> => Documento: doc_name | |
// function subResponseDOcTag(txt) { | |
// const regex = /<<<(.*?)>>>/; | |
// const result = txt.replace(regex, (match, p1) => `Documento: ${p1}`); | |
// return result; | |
// } | |