45 lines
1.4 KiB
JavaScript
45 lines
1.4 KiB
JavaScript
import { createLineData, parseLine, useDocument } from '@terrace/core'
|
|
import { createStdinReader } from '@terrace/core/readers/node-readline'
|
|
|
|
const testName = process.argv[2]
|
|
|
|
|
|
const tests = {
|
|
'linedata:basic': async () => {
|
|
const lineData = createLineData('')
|
|
const next = createStdinReader()
|
|
|
|
while ((lineData.line = await next()) != null) {
|
|
parseLine(lineData)
|
|
const { level, indent, offsetHead, offsetTail, line } = lineData
|
|
console.log(`| level ${level} | indent ${indent} | offsetHead ${offsetHead} | offsetTail ${offsetTail} | line ${line} |`)
|
|
}
|
|
},
|
|
'linedata:tabs': async () => {
|
|
const lineData = createLineData('', '\t')
|
|
const next = createStdinReader()
|
|
|
|
while ((lineData.line = await next()) != null) {
|
|
parseLine(lineData)
|
|
const { level, indent, offsetHead, offsetTail, line } = lineData
|
|
console.log(`| level ${level} | indent ${indent} | offsetHead ${offsetHead} | offsetTail ${offsetTail} | line ${line} |`)
|
|
}
|
|
},
|
|
'linedata:head-tail': async () => {
|
|
const lineData = createLineData('')
|
|
const next = createStdinReader()
|
|
|
|
while ((lineData.line = await next()) != null) {
|
|
parseLine(lineData)
|
|
const { level, indent, offsetHead, offsetTail, line } = lineData
|
|
const head = line.slice(offsetHead, offsetTail)
|
|
const tail = line.slice(offsetTail + 1)
|
|
|
|
console.log(`| head ${head} | tail ${tail} |`)
|
|
}
|
|
}
|
|
}
|
|
|
|
const test = tests[testName]
|
|
await test()
|