| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- 'use strict';
- var Node = require('../../nodes/Node.js');
- var Pair = require('../../nodes/Pair.js');
- var YAMLMap = require('../../nodes/YAMLMap.js');
- function createMap(schema, obj, ctx) {
- const { keepUndefined, replacer } = ctx;
- const map = new YAMLMap.YAMLMap(schema);
- const add = (key, value) => {
- if (typeof replacer === 'function')
- value = replacer.call(obj, key, value);
- else if (Array.isArray(replacer) && !replacer.includes(key))
- return;
- if (value !== undefined || keepUndefined)
- map.items.push(Pair.createPair(key, value, ctx));
- };
- if (obj instanceof Map) {
- for (const [key, value] of obj)
- add(key, value);
- }
- else if (obj && typeof obj === 'object') {
- for (const key of Object.keys(obj))
- add(key, obj[key]);
- }
- if (typeof schema.sortMapEntries === 'function') {
- map.items.sort(schema.sortMapEntries);
- }
- return map;
- }
- const map = {
- collection: 'map',
- createNode: createMap,
- default: true,
- nodeClass: YAMLMap.YAMLMap,
- tag: 'tag:yaml.org,2002:map',
- resolve(map, onError) {
- if (!Node.isMap(map))
- onError('Expected a mapping for this tag');
- return map;
- }
- };
- exports.map = map;
|