Swap-Aggregator-Subgraph/node_modules/yaml/dist/schema/Pair.js
2022-07-03 07:27:35 +05:30

174 lines
5.0 KiB
JavaScript

"use strict";
exports.Pair = void 0;
var _addComment = require("../addComment");
var _constants = require("../constants");
var _toJSON = require("../toJSON");
var _Collection = require("./Collection");
var _Node = require("./Node");
var _Scalar = require("./Scalar");
var _Seq = require("./Seq");
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
const stringifyKey = (key, jsKey, ctx) => {
if (jsKey === null) return '';
if (typeof jsKey !== 'object') return String(jsKey);
if (key instanceof _Node.Node && ctx && ctx.doc) return key.toString({
anchors: {},
doc: ctx.doc,
indent: '',
indentStep: ctx.indentStep,
inFlow: true,
inStringifyKey: true
});
return JSON.stringify(jsKey);
};
class Pair extends _Node.Node {
constructor(key, value = null) {
super();
this.key = key;
this.value = value;
this.type = Pair.Type.PAIR;
}
get commentBefore() {
return this.key && this.key.commentBefore;
}
set commentBefore(cb) {
if (this.key == null) this.key = new _Scalar.Scalar(null);
this.key.commentBefore = cb;
}
addToJSMap(ctx, map) {
const key = (0, _toJSON.toJSON)(this.key, '', ctx);
if (map instanceof Map) {
const value = (0, _toJSON.toJSON)(this.value, key, ctx);
map.set(key, value);
} else if (map instanceof Set) {
map.add(key);
} else {
const stringKey = stringifyKey(this.key, key, ctx);
map[stringKey] = (0, _toJSON.toJSON)(this.value, stringKey, ctx);
}
return map;
}
toJSON(_, ctx) {
const pair = ctx && ctx.mapAsMap ? new Map() : {};
return this.addToJSMap(ctx, pair);
}
toString(ctx, onComment, onChompKeep) {
if (!ctx || !ctx.doc) return JSON.stringify(this);
const {
indent: indentSize,
indentSeq,
simpleKeys
} = ctx.doc.options;
let {
key,
value
} = this;
let keyComment = key instanceof _Node.Node && key.comment;
if (simpleKeys) {
if (keyComment) {
throw new Error('With simple keys, key nodes cannot have comments');
}
if (key instanceof _Collection.Collection) {
const msg = 'With simple keys, collection cannot be used as a key value';
throw new Error(msg);
}
}
const explicitKey = !simpleKeys && (!key || keyComment || key instanceof _Collection.Collection || key.type === _constants.Type.BLOCK_FOLDED || key.type === _constants.Type.BLOCK_LITERAL);
const {
doc,
indent,
indentStep
} = ctx;
ctx = Object.assign({}, ctx, {
implicitKey: !explicitKey,
indent: indent + indentStep
});
let chompKeep = false;
let str = doc.schema.stringify(key, ctx, () => keyComment = null, () => chompKeep = true);
str = (0, _addComment.addComment)(str, ctx.indent, keyComment);
if (ctx.allNullValues && !simpleKeys) {
if (this.comment) {
str = (0, _addComment.addComment)(str, ctx.indent, this.comment);
if (onComment) onComment();
} else if (chompKeep && !keyComment && onChompKeep) onChompKeep();
return ctx.inFlow ? str : `? ${str}`;
}
str = explicitKey ? `? ${str}\n${indent}:` : `${str}:`;
if (this.comment) {
// expected (but not strictly required) to be a single-line comment
str = (0, _addComment.addComment)(str, ctx.indent, this.comment);
if (onComment) onComment();
}
let vcb = '';
let valueComment = null;
if (value instanceof _Node.Node) {
if (value.spaceBefore) vcb = '\n';
if (value.commentBefore) {
const cs = value.commentBefore.replace(/^/gm, `${ctx.indent}#`);
vcb += `\n${cs}`;
}
valueComment = value.comment;
} else if (value && typeof value === 'object') {
value = doc.schema.createNode(value, true);
}
ctx.implicitKey = false;
if (!explicitKey && !this.comment && value instanceof _Scalar.Scalar) ctx.indentAtStart = str.length + 1;
chompKeep = false;
if (!indentSeq && indentSize >= 2 && !ctx.inFlow && !explicitKey && value instanceof _Seq.YAMLSeq && value.type !== _constants.Type.FLOW_SEQ && !value.tag && !doc.anchors.getName(value)) {
// If indentSeq === false, consider '- ' as part of indentation where possible
ctx.indent = ctx.indent.substr(2);
}
const valueStr = doc.schema.stringify(value, ctx, () => valueComment = null, () => chompKeep = true);
let ws = ' ';
if (vcb || this.comment) {
ws = `${vcb}\n${ctx.indent}`;
} else if (!explicitKey && value instanceof _Collection.Collection) {
const flow = valueStr[0] === '[' || valueStr[0] === '{';
if (!flow || valueStr.includes('\n')) ws = `\n${ctx.indent}`;
}
if (chompKeep && !valueComment && onChompKeep) onChompKeep();
return (0, _addComment.addComment)(str + ws + valueStr, ctx.indent, valueComment);
}
}
exports.Pair = Pair;
_defineProperty(Pair, "Type", {
PAIR: 'PAIR',
MERGE_PAIR: 'MERGE_PAIR'
});