| ; | |
| var Document = require('../doc/Document.js'); | |
| var composeNode = require('./compose-node.js'); | |
| var resolveEnd = require('./resolve-end.js'); | |
| var resolveProps = require('./resolve-props.js'); | |
| function composeDoc(options, directives, { offset, start, value, end }, onError) { | |
| const opts = Object.assign({ _directives: directives }, options); | |
| const doc = new Document.Document(undefined, opts); | |
| const ctx = { | |
| atKey: false, | |
| atRoot: true, | |
| directives: doc.directives, | |
| options: doc.options, | |
| schema: doc.schema | |
| }; | |
| const props = resolveProps.resolveProps(start, { | |
| indicator: 'doc-start', | |
| next: value ?? end?.[0], | |
| offset, | |
| onError, | |
| parentIndent: 0, | |
| startOnNewline: true | |
| }); | |
| if (props.found) { | |
| doc.directives.docStart = true; | |
| if (value && | |
| (value.type === 'block-map' || value.type === 'block-seq') && | |
| !props.hasNewline) | |
| onError(props.end, 'MISSING_CHAR', 'Block collection cannot start on same line with directives-end marker'); | |
| } | |
| // @ts-expect-error If Contents is set, let's trust the user | |
| doc.contents = value | |
| ? composeNode.composeNode(ctx, value, props, onError) | |
| : composeNode.composeEmptyNode(ctx, props.end, start, null, props, onError); | |
| const contentEnd = doc.contents.range[2]; | |
| const re = resolveEnd.resolveEnd(end, contentEnd, false, onError); | |
| if (re.comment) | |
| doc.comment = re.comment; | |
| doc.range = [offset, contentEnd, re.offset]; | |
| return doc; | |
| } | |
| exports.composeDoc = composeDoc; | |
Xet Storage Details
- Size:
- 1.62 kB
- Xet hash:
- 72196603ffd5da5c983bdc6aa4c17225ce1b3997b215329446a2cd9f5b24deb2
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.