You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
2.0 KiB
79 lines
2.0 KiB
'use strict'; |
|
|
|
var parseCst = require('./parse-cst.js'); |
|
var Document$1 = require('./Document-9b4560a1.js'); |
|
var Schema = require('./Schema-88e323a7.js'); |
|
var PlainValue = require('./PlainValue-ec8e588e.js'); |
|
var warnings = require('./warnings-1000a372.js'); |
|
require('./resolveSeq-d03cb037.js'); |
|
|
|
function createNode(value, wrapScalars = true, tag) { |
|
if (tag === undefined && typeof wrapScalars === 'string') { |
|
tag = wrapScalars; |
|
wrapScalars = true; |
|
} |
|
|
|
const options = Object.assign({}, Document$1.Document.defaults[Document$1.defaultOptions.version], Document$1.defaultOptions); |
|
const schema = new Schema.Schema(options); |
|
return schema.createNode(value, wrapScalars, tag); |
|
} |
|
|
|
class Document extends Document$1.Document { |
|
constructor(options) { |
|
super(Object.assign({}, Document$1.defaultOptions, options)); |
|
} |
|
|
|
} |
|
|
|
function parseAllDocuments(src, options) { |
|
const stream = []; |
|
let prev; |
|
|
|
for (const cstDoc of parseCst.parse(src)) { |
|
const doc = new Document(options); |
|
doc.parse(cstDoc, prev); |
|
stream.push(doc); |
|
prev = doc; |
|
} |
|
|
|
return stream; |
|
} |
|
|
|
function parseDocument(src, options) { |
|
const cst = parseCst.parse(src); |
|
const doc = new Document(options).parse(cst[0]); |
|
|
|
if (cst.length > 1) { |
|
const errMsg = 'Source contains multiple documents; please use YAML.parseAllDocuments()'; |
|
doc.errors.unshift(new PlainValue.YAMLSemanticError(cst[1], errMsg)); |
|
} |
|
|
|
return doc; |
|
} |
|
|
|
function parse(src, options) { |
|
const doc = parseDocument(src, options); |
|
doc.warnings.forEach(warning => warnings.warn(warning)); |
|
if (doc.errors.length > 0) throw doc.errors[0]; |
|
return doc.toJSON(); |
|
} |
|
|
|
function stringify(value, options) { |
|
const doc = new Document(options); |
|
doc.contents = value; |
|
return String(doc); |
|
} |
|
|
|
const YAML = { |
|
createNode, |
|
defaultOptions: Document$1.defaultOptions, |
|
Document, |
|
parse, |
|
parseAllDocuments, |
|
parseCST: parseCst.parse, |
|
parseDocument, |
|
scalarOptions: Document$1.scalarOptions, |
|
stringify |
|
}; |
|
|
|
exports.YAML = YAML;
|
|
|