oxc/website/playground/editor.ts
Don Isaac f96b6b18c9
build(website): use typescript (#3653)
Co-authored-by: Boshen <boshenc@gmail.com>
2024-06-13 15:02:32 +08:00

40 lines
1,009 B
TypeScript

import type { TreeCursor } from "@lezer/common";
import type { EditorView } from "codemirror";
/**
* Go down and find the `start` and `end` keys
*/
export function getStartAndEnd(
view: EditorView,
cursor: TreeCursor
): [start: number | undefined, end: number | undefined] {
let start: number | undefined, end: number | undefined;
while (true) {
if (
!start &&
this.getTextFromView(view, cursor.from, cursor.to) == '"start"'
) {
cursor.next();
start = this.getTextFromView(view, cursor.from, cursor.to);
}
if (
!end &&
this.getTextFromView(view, cursor.from, cursor.to) == '"end"'
) {
cursor.next();
end = this.getTextFromView(view, cursor.from, cursor.to);
}
if (start && end) {
break;
}
if (!cursor.next()) {
break;
}
}
return [start, end]
}
export const convertToUtf8 = (sourceTextUtf8: ArrayBuffer, d: number) => {
return new TextDecoder().decode(sourceTextUtf8.slice(0, d)).length;
}