tap
Version:
A Test-Anything-Protocol library for JavaScript
101 lines (80 loc) • 2.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _parse = _interopRequireDefault(require("./cst/parse"));
var _Document = _interopRequireDefault(require("./Document"));
var _errors = require("./errors");
var _schema = _interopRequireDefault(require("./schema"));
var _warnings = require("./warnings");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const 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, wrapScalars = true, tag) {
if (tag === undefined && typeof wrapScalars === 'string') {
tag = wrapScalars;
wrapScalars = true;
}
const options = Object.assign({}, _Document.default.defaults[defaultOptions.version], defaultOptions);
const schema = new _schema.default(options);
return schema.createNode(value, wrapScalars, tag);
}
class Document extends _Document.default {
constructor(options) {
super(Object.assign({}, defaultOptions, options));
}
}
function parseAllDocuments(src, options) {
const stream = [];
let prev;
for (const cstDoc of (0, _parse.default)(src)) {
const doc = new Document(options);
doc.parse(cstDoc, prev);
stream.push(doc);
prev = doc;
}
return stream;
}
function parseDocument(src, options) {
const cst = (0, _parse.default)(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 _errors.YAMLSemanticError(cst[1], errMsg));
}
return doc;
}
function parse(src, options) {
const doc = parseDocument(src, options);
doc.warnings.forEach(warning => (0, _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);
}
var _default = {
createNode,
defaultOptions,
Document,
parse,
parseAllDocuments,
parseCST: _parse.default,
parseDocument,
stringify
};
exports.default = _default;