Skip to content

Commit 5b5e290

Browse files
committed
fix: Include range in flow sequence pair maps (fixes #573)
1 parent b309e23 commit 5b5e290

File tree

3 files changed

+9
-0
lines changed

3 files changed

+9
-0
lines changed

src/compose/resolve-flow-collection.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,8 @@ export function resolveFlowCollection(
198198
const map = new YAMLMap(ctx.schema)
199199
map.flow = true
200200
map.items.push(pair)
201+
const endRange = (valueNode ?? keyNode).range
202+
map.range = [keyNode.range[0], endRange[1], endRange[2]]
201203
;(coll as YAMLSeq).items.push(map)
202204
}
203205
offset = valueNode ? valueNode.range[2] : valueProps.end

src/nodes/Node.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ export type ParsedNode =
4141
| YAMLMap.Parsed
4242
| YAMLSeq.Parsed
4343

44+
/** `[start, value-end, node-end]` */
4445
export type Range = [number, number, number]
4546

4647
export abstract class NodeBase {

tests/doc/parse.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -392,6 +392,12 @@ describe('maps with no values', () => {
392392
expect(doc.range).toEqual([0, 4, 4])
393393
})
394394

395+
test('pair in flow seq has correct range (#573)', () => {
396+
const doc = YAML.parseDocument<any, false>('[a:]')
397+
expect(doc.range).toEqual([0, 4, 4])
398+
expect(doc.get(0).range).toEqual([1, 3, 3])
399+
})
400+
395401
test('implicit scalar key after explicit key with no value', () => {
396402
const doc = YAML.parseDocument<YAML.YAMLMap, false>('? - 1\nx:\n')
397403
expect(doc.contents.items).toMatchObject([

0 commit comments

Comments
 (0)