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.
		
		
		
		
		
			
		
			
				
					80 lines
				
				2.0 KiB
			
		
		
			
		
	
	
					80 lines
				
				2.0 KiB
			| 
											3 years ago
										 | '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; |