tap
Version:
A Test-Anything-Protocol library for JavaScript
139 lines (112 loc) • 3.82 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _parse = _interopRequireDefault(require("./cst/parse"));
var _Document = _interopRequireDefault(require("./Document"));
var _errors = require("./errors");
var _schema = _interopRequireDefault(require("./schema"));
var _warnings = require("./warnings");
var defaultOptions = {
anchorPrefix: 'a',
customTags: null,
keepCstNodes: false,
keepNodeTypes: true,
keepBlobsInJSON: true,
mapAsMap: false,
maxAliasCount: 100,
prettyErrors: false,
// TODO Set true in v2
simpleKeys: false,
version: '1.2'
};
function createNode(value) {
var wrapScalars = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
var tag = arguments.length > 2 ? arguments[2] : undefined;
if (tag === undefined && typeof wrapScalars === 'string') {
tag = wrapScalars;
wrapScalars = true;
}
var options = Object.assign({}, _Document.default.defaults[defaultOptions.version], defaultOptions);
var schema = new _schema.default(options);
return schema.createNode(value, wrapScalars, tag);
}
var Document =
/*#__PURE__*/
function (_YAMLDocument) {
(0, _inherits2.default)(Document, _YAMLDocument);
function Document(options) {
(0, _classCallCheck2.default)(this, Document);
return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(Document).call(this, Object.assign({}, defaultOptions, options)));
}
return Document;
}(_Document.default);
function parseAllDocuments(src, options) {
var stream = [];
var prev;
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = (0, _parse.default)(src)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var cstDoc = _step.value;
var doc = new Document(options);
doc.parse(cstDoc, prev);
stream.push(doc);
prev = doc;
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
return stream;
}
function parseDocument(src, options) {
var cst = (0, _parse.default)(src);
var doc = new Document(options).parse(cst[0]);
if (cst.length > 1) {
var errMsg = 'Source contains multiple documents; please use YAML.parseAllDocuments()';
doc.errors.unshift(new _errors.YAMLSemanticError(cst[1], errMsg));
}
return doc;
}
function parse(src, options) {
var doc = parseDocument(src, options);
doc.warnings.forEach(function (warning) {
return (0, _warnings.warn)(warning);
});
if (doc.errors.length > 0) throw doc.errors[0];
return doc.toJSON();
}
function stringify(value, options) {
var doc = new Document(options);
doc.contents = value;
return String(doc);
}
var _default = {
createNode: createNode,
defaultOptions: defaultOptions,
Document: Document,
parse: parse,
parseAllDocuments: parseAllDocuments,
parseCST: _parse.default,
parseDocument: parseDocument,
stringify: stringify
};
exports.default = _default;