12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- export function track(config) {
-
-
-
- const options = config || {}
- const now = options.now || {}
- let lineShift = options.lineShift || 0
- let line = now.line || 1
- let column = now.column || 1
- return {move, current, shift}
-
- function current() {
- return {now: {line, column}, lineShift}
- }
-
- function shift(value) {
- lineShift += value
- }
-
- function move(input) {
-
- const value = input || ''
- const chunks = value.split(/\r?\n|\r/g)
- const tail = chunks[chunks.length - 1]
- line += chunks.length - 1
- column =
- chunks.length === 1 ? column + tail.length : 1 + tail.length + lineShift
- return value
- }
- }
|