四好公路
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.
 
 
 
 

93 lines
2.6 KiB

'use strict';
var _rollupPluginBabelHelpers = require('./_rollupPluginBabelHelpers-eed30217.js');
var parseCst = require('./parse-3997f544.js');
require('./stringifyNumber-dea1120c.js');
require('./Schema-807430ba.js');
var Document = require('./Document-f89a2614.js');
/* global console, process, YAML_SILENCE_WARNINGS */
function warn(warning, type) {
if (typeof YAML_SILENCE_WARNINGS !== 'undefined' && YAML_SILENCE_WARNINGS) return;
if (typeof process !== 'undefined') {
if (process.env.YAML_SILENCE_WARNINGS) return; // This will throw in Jest if `warning` is an Error instance due to
// https://github.com/facebook/jest/issues/2549
if (process.emitWarning) {
process.emitWarning(warning, type);
return;
}
} // eslint-disable-next-line no-console
console.warn(type ? `${type}: ${warning}` : warning);
}
function parseAllDocuments(src, options) {
const stream = [];
let prev;
for (const cstDoc of parseCst.parse(src)) {
const doc = new Document.Document(undefined, null, 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.Document(cst[0], null, options);
if (cst.length > 1) {
const errMsg = 'Source contains multiple documents; please use YAML.parseAllDocuments()';
doc.errors.unshift(new _rollupPluginBabelHelpers.YAMLSemanticError(cst[1], errMsg));
}
return doc;
}
function parse(src, reviver, options) {
if (options === undefined && reviver && typeof reviver === 'object') {
options = reviver;
reviver = undefined;
}
const doc = parseDocument(src, options);
doc.warnings.forEach(warning => warn(warning));
if (doc.errors.length > 0) throw doc.errors[0];
return doc.toJS({
reviver
});
}
function stringify(value, replacer, options) {
if (typeof options === 'string') options = options.length;
if (typeof options === 'number') {
const indent = Math.round(options);
options = indent < 1 ? undefined : indent > 8 ? {
indent: 8
} : {
indent
};
}
if (value === undefined) {
const {
keepUndefined
} = options || replacer || {};
if (!keepUndefined) return undefined;
}
return new Document.Document(value, replacer, options).toString();
}
exports.parseCST = parseCst.parse;
exports.Document = Document.Document;
exports.defaultOptions = Document.defaultOptions;
exports.scalarOptions = Document.scalarOptions;
exports.parse = parse;
exports.parseAllDocuments = parseAllDocuments;
exports.parseDocument = parseDocument;
exports.stringify = stringify;