2026-02-22 14:13:59 +09:00
|
|
|
import { parseLineRef } from "./validation"
|
|
|
|
|
import type { HashlineEdit } from "./types"
|
|
|
|
|
|
|
|
|
|
export function getEditLineNumber(edit: HashlineEdit): number {
|
2026-02-24 05:06:41 +09:00
|
|
|
switch (edit.op) {
|
|
|
|
|
case "replace":
|
|
|
|
|
return parseLineRef(edit.end ?? edit.pos).line
|
2026-02-22 14:13:59 +09:00
|
|
|
case "append":
|
2026-02-24 05:06:41 +09:00
|
|
|
return edit.pos ? parseLineRef(edit.pos).line : Number.NEGATIVE_INFINITY
|
2026-02-22 14:13:59 +09:00
|
|
|
case "prepend":
|
2026-02-24 05:06:41 +09:00
|
|
|
return edit.pos ? parseLineRef(edit.pos).line : Number.NEGATIVE_INFINITY
|
2026-02-22 14:13:59 +09:00
|
|
|
default:
|
|
|
|
|
return Number.POSITIVE_INFINITY
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function collectLineRefs(edits: HashlineEdit[]): string[] {
|
|
|
|
|
return edits.flatMap((edit) => {
|
2026-02-24 05:06:41 +09:00
|
|
|
switch (edit.op) {
|
|
|
|
|
case "replace":
|
|
|
|
|
return edit.end ? [edit.pos, edit.end] : [edit.pos]
|
2026-02-22 14:13:59 +09:00
|
|
|
case "append":
|
|
|
|
|
case "prepend":
|
2026-02-24 05:06:41 +09:00
|
|
|
return edit.pos ? [edit.pos] : []
|
2026-02-22 14:13:59 +09:00
|
|
|
default:
|
|
|
|
|
return []
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|