3
0
mirror of https://github.com/larvit/adf-codec.git synced 2026-11-12 19:58:28 +01:00

Answer prose round 2: 0 🔴, 2 🟡 (0 misread); the memo comments say what they hold, the PR body names destinationEnds

This commit is contained in:
2026-10-28 12:48:28 +01:00
committed by Lillem4n
parent 935012d475
commit 744476658c
2 changed files with 3 additions and 3 deletions
+2 -2
View File
@@ -10,7 +10,7 @@ export type LinkPart = { length: number; value: string }
// Every destination ending at one index shares what follows it: the title and the closing `)`.
type Tail = { end: number; title: string | undefined }
// What the targets read in `text` share; `destinationEnds` is walked at the first one.
// One memo serves every target in `text`, those in a directive's content included.
export type TargetMemo = { destinationEnds: Int32Array | undefined; tails: Map<number, Tail | undefined>; text: string }
// The lossless flavour escapes a quote alone, writing a title holding a backslash or an entity reference as a directive (spec/flavour.md, Marks); the portable flavour writes no directive, so it escapes those too, and a table cell's `|` (README, Portable markdown).
@@ -72,7 +72,7 @@ export function targetMemo(text: string): TargetMemo {
return { destinationEnds: undefined, tails: new Map(), text }
}
// Where an unbracketed destination starting at each index stops, in one pass, for every start a target can have: the index just after a `(`, a space or a control character. Index 0 is a start too, for `readDestination`, which reads from its text's first character.
// `ends[start]` is where an unbracketed destination from `start` stops, filled in one pass for every start a target can have: just after a `(`, a space or a control character, and 0, where `readDestination`'s run begins.
function destinationEnds(text: string): Int32Array {
const ends = new Int32Array(text.length + 1)
const open = [0]
+1 -1
View File
@@ -433,7 +433,7 @@ function resolveTarget(scan: Scan, start: number, index: number): InlineTarget |
const after = index + 1
if (scan.source.charAt(after) === '(') {
const inline = readInlineTarget(scan.targets, scan.offset + after)
// A target read in the outermost content holds in a directive's content exactly when it ends inside it.
// The memo reads the outermost content; a target it reads holds here exactly when the target ends inside `source`.
if (inline !== undefined && after + inline.length <= scan.source.length) return inline
}
const label = scan.source.charAt(after) === '[' ? readLabel(scan.source, after) : undefined