Spaces:
Running
Running
File size: 1,060 Bytes
6556bb5 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
/**
* Indicates position of spans of text inside the string.
* (for visual applications only, no semantic sense here.)
*/
interface Span {
type: string;
start: number;
end: number;
}
class Displacy {
/**
* Render a text string and its entity spans
*
* *see displacy-ent.js*
*/
static render(text: string, spans: Span[]): string {
let out = {
__content: "",
append(s: string) {
this.__content += s;
}
};
let offset = 0;
spans.forEach(({ type, start, end }) => {
const entity = text.slice(start, end);
const fragments = text.slice(offset, start).split('\n');
fragments.forEach((fragment, i) => {
out.append(fragment);
if (fragments.length > 1 && i !== fragments.length - 1) {
out.append('<br>');
}
});
// Breaking change from displacy-ent.js:
// We do not filter any entity type out.
out.append(`<mark data-entity=${ type.toLowerCase() }>${ entity }</mark>`);
offset = end;
});
out.append(text.slice(offset, text.length));
return out.__content;
}
}
|