mirror of
https://github.com/docmost/docmost.git
synced 2026-08-28 01:07:08 +08:00
fix(ai): collapse blank-line runs in extracted page text
This commit is contained in:
@@ -57,6 +57,7 @@ import {
|
|||||||
JSONContent,
|
JSONContent,
|
||||||
} from '@tiptap/core';
|
} from '@tiptap/core';
|
||||||
import { generateHTML, generateJSON } from '../common/helpers/prosemirror/html';
|
import { generateHTML, generateJSON } from '../common/helpers/prosemirror/html';
|
||||||
|
import { collapseBlankLines } from '../common/helpers';
|
||||||
// @tiptap/html library works best for generating prosemirror json state but not HTML
|
// @tiptap/html library works best for generating prosemirror json state but not HTML
|
||||||
// see: https://github.com/ueberdosis/tiptap/issues/5352
|
// see: https://github.com/ueberdosis/tiptap/issues/5352
|
||||||
// see:https://github.com/ueberdosis/tiptap/issues/4089
|
// see:https://github.com/ueberdosis/tiptap/issues/4089
|
||||||
@@ -146,7 +147,7 @@ export function htmlToJson(html: string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function jsonToText(tiptapJson: JSONContent) {
|
export function jsonToText(tiptapJson: JSONContent) {
|
||||||
return generateText(tiptapJson, tiptapExtensions);
|
return collapseBlankLines(generateText(tiptapJson, tiptapExtensions));
|
||||||
}
|
}
|
||||||
|
|
||||||
export function jsonToNode(tiptapJson: JSONContent) {
|
export function jsonToNode(tiptapJson: JSONContent) {
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
export * from './utils';
|
export * from './utils';
|
||||||
|
export * from './text.utils';
|
||||||
export * from './nanoid.utils';
|
export * from './nanoid.utils';
|
||||||
export * from './file.helper';
|
export * from './file.helper';
|
||||||
export * from './constants';
|
export * from './constants';
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
import { collapseBlankLines } from './text.utils';
|
||||||
|
|
||||||
|
describe('collapseBlankLines', () => {
|
||||||
|
it.each([
|
||||||
|
['a\n\n\n\nb', 'a\n\nb'],
|
||||||
|
['a\n\nb', 'a\n\nb'],
|
||||||
|
['a\nb', 'a\nb'],
|
||||||
|
['\n\n\n\na\n\n\n', '\n\na\n\n'],
|
||||||
|
['no newlines', 'no newlines'],
|
||||||
|
['', ''],
|
||||||
|
])('collapses %j to %j', (input, expected) => {
|
||||||
|
expect(collapseBlankLines(input)).toBe(expected);
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
export function collapseBlankLines(text: string): string {
|
||||||
|
return text.replace(/\n{2,}/g, '\n\n');
|
||||||
|
}
|
||||||
+1
-1
Submodule apps/server/src/ee updated: 5d371309ca...75045365f1
Reference in New Issue
Block a user