| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- 'use strict';
- const yaml = require('js-yaml');
- /**
- * Default engines
- */
- const engines = exports = module.exports;
- /**
- * YAML
- */
- engines.yaml = {
- parse: yaml.safeLoad.bind(yaml),
- stringify: yaml.safeDump.bind(yaml)
- };
- /**
- * JSON
- */
- engines.json = {
- parse: JSON.parse.bind(JSON),
- stringify: function(obj, options) {
- const opts = Object.assign({replacer: null, space: 2}, options);
- return JSON.stringify(obj, opts.replacer, opts.space);
- }
- };
- /**
- * JavaScript
- */
- engines.javascript = {
- parse: function parse(str, options, wrap) {
- /* eslint no-eval: 0 */
- try {
- if (wrap !== false) {
- str = '(function() {\nreturn ' + str.trim() + ';\n}());';
- }
- return eval(str) || {};
- } catch (err) {
- if (wrap !== false && /(unexpected|identifier)/i.test(err.message)) {
- return parse(str, options, false);
- }
- throw new SyntaxError(err);
- }
- },
- stringify: function() {
- throw new Error('stringifying JavaScript is not supported');
- }
- };
|