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