mirror of
https://github.com/heyman/heynote.git
synced 2024-11-21 23:43:22 +01:00
Add test that ensures that getBlocksFromSyntaxTree() and getBlocksFromString() functions produces the same results
This commit is contained in:
parent
016422e7db
commit
bc3a9b66a1
@ -25,7 +25,7 @@ let firstBlockDelimiterSize
|
|||||||
* Return a list of blocks in the document from the syntax tree.
|
* Return a list of blocks in the document from the syntax tree.
|
||||||
* syntaxTreeAvailable() should have been called before this function to ensure the syntax tree is available.
|
* syntaxTreeAvailable() should have been called before this function to ensure the syntax tree is available.
|
||||||
*/
|
*/
|
||||||
function getBlocksFromSyntaxTree(state) {
|
export function getBlocksFromSyntaxTree(state) {
|
||||||
//const timer = startTimer()
|
//const timer = startTimer()
|
||||||
const blocks = [];
|
const blocks = [];
|
||||||
const tree = syntaxTree(state, state.doc.length)
|
const tree = syntaxTree(state, state.doc.length)
|
||||||
@ -72,7 +72,7 @@ function getBlocksFromSyntaxTree(state) {
|
|||||||
/**
|
/**
|
||||||
* Parse blocks from document's string contents using String.indexOf()
|
* Parse blocks from document's string contents using String.indexOf()
|
||||||
*/
|
*/
|
||||||
function getBlocksFromString(state) {
|
export function getBlocksFromString(state) {
|
||||||
//const timer = startTimer()
|
//const timer = startTimer()
|
||||||
const blocks = []
|
const blocks = []
|
||||||
const doc = state.doc
|
const doc = state.doc
|
||||||
@ -138,7 +138,7 @@ function getBlocksFromString(state) {
|
|||||||
* the blocks are parsed from the string contents of the document, which is much faster
|
* the blocks are parsed from the string contents of the document, which is much faster
|
||||||
* than waiting for the tree parsing to finish.
|
* than waiting for the tree parsing to finish.
|
||||||
*/
|
*/
|
||||||
function getBlocks(state) {
|
export function getBlocks(state) {
|
||||||
if (syntaxTreeAvailable(state, state.doc.length)) {
|
if (syntaxTreeAvailable(state, state.doc.length)) {
|
||||||
return getBlocksFromSyntaxTree(state)
|
return getBlocksFromSyntaxTree(state)
|
||||||
} else {
|
} else {
|
||||||
|
28
tests/block-parsing.spec.js
Normal file
28
tests/block-parsing.spec.js
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
import { expect, test } from "@playwright/test"
|
||||||
|
import { EditorState } from "@codemirror/state"
|
||||||
|
|
||||||
|
import { heynoteLang } from "../src/editor/lang-heynote/heynote.js"
|
||||||
|
import { getBlocksFromSyntaxTree, getBlocksFromString } from "../src/editor/block/block.js"
|
||||||
|
|
||||||
|
test("parse blocks from both syntax tree and string contents", async ({page}) => {
|
||||||
|
const contents = `
|
||||||
|
∞∞∞text
|
||||||
|
Text Block A
|
||||||
|
∞∞∞text-a
|
||||||
|
Text Block B
|
||||||
|
∞∞∞json-a
|
||||||
|
{
|
||||||
|
"key": "value"
|
||||||
|
}
|
||||||
|
∞∞∞python
|
||||||
|
print("Hello, World!")
|
||||||
|
`
|
||||||
|
const state = EditorState.create({
|
||||||
|
doc: contents,
|
||||||
|
extensions: heynoteLang(),
|
||||||
|
})
|
||||||
|
const treeBlocks = getBlocksFromSyntaxTree(state)
|
||||||
|
const stringBlocks = getBlocksFromString(state)
|
||||||
|
|
||||||
|
expect(treeBlocks).toEqual(stringBlocks)
|
||||||
|
})
|
Loading…
Reference in New Issue
Block a user