diff --git a/lib/js-yaml/dumper.js b/lib/js-yaml/dumper.js index 86f34794..77ba64cb 100644 --- a/lib/js-yaml/dumper.js +++ b/lib/js-yaml/dumper.js @@ -23,6 +23,7 @@ var CHAR_ASTERISK = 0x2A; /* * */ var CHAR_COMMA = 0x2C; /* , */ var CHAR_MINUS = 0x2D; /* - */ var CHAR_COLON = 0x3A; /* : */ +var CHAR_EQUALS = 0x3D; /* = */ var CHAR_GREATER_THAN = 0x3E; /* > */ var CHAR_QUESTION = 0x3F; /* ? */ var CHAR_COMMERCIAL_AT = 0x40; /* @ */ @@ -220,12 +221,13 @@ function isPlainSafeFirst(c) { && c !== CHAR_RIGHT_SQUARE_BRACKET && c !== CHAR_LEFT_CURLY_BRACKET && c !== CHAR_RIGHT_CURLY_BRACKET - // | “#” | “&” | “*” | “!” | “|” | “>” | “'” | “"” + // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “"” && c !== CHAR_SHARP && c !== CHAR_AMPERSAND && c !== CHAR_ASTERISK && c !== CHAR_EXCLAMATION && c !== CHAR_VERTICAL_LINE + && c !== CHAR_EQUALS && c !== CHAR_GREATER_THAN && c !== CHAR_SINGLE_QUOTE && c !== CHAR_DOUBLE_QUOTE diff --git a/test/issues/0519.js b/test/issues/0519.js new file mode 100644 index 00000000..ce9f77bd --- /dev/null +++ b/test/issues/0519.js @@ -0,0 +1,11 @@ +'use strict'; + +var assert = require('assert'); +var yaml = require('../../'); + +test('Dumper should add quotes around equals sign', function () { + // pyyaml fails with unquoted `=` + // https://yaml-online-parser.appspot.com/?yaml=%3D%0A&type=json + assert.strictEqual(yaml.load(yaml.dump('=')), '='); + assert.strictEqual(yaml.dump('='), "'='\n"); +});