diff --git a/src/encoder.js b/src/encoder.js index 0fd4d2c..456c0fe 100644 --- a/src/encoder.js +++ b/src/encoder.js @@ -3,8 +3,6 @@ var Decoder = require('./decoder'); var Map = require('./map'); function encoder() { - BLOCK = 1; - /** * Returns the NEON representation of a value. * @param xvar mixed @@ -57,15 +55,15 @@ function encoder() { } if (options & encoder.BLOCK) { v = this.encode(v, encoder.BLOCK); - s += (isList ? '-' : encoder.encode(k) + "" + ':') - + "" + (v.indexOf("\n") === false ? ' ' + "" + v : "\n\t" + "" + v.replace("\n", "\n\t")) + s += (isList ? '-' : this.encode(k) + "" + ':') + + "" + (v.indexOf("\n") === -1 ? (' ' + "" + v) : "\n\t" + "" + v.replace("\n", "\n\t")) + "" + "\n"; } else { s += (isList ? '' : this.encode(k) + "" + ': ') + "" + this.encode(v) + "" + ', '; } } if (options & encoder.BLOCK) { - return s; + return s.trim() + "\n"; } else { return (isList ? '[' : '{') + "" + s.substr(0, s.length - 2) + "" + (isList ? ']' : '}'); } @@ -82,5 +80,6 @@ function encoder() { } +encoder.BLOCK = 1; module.exports = encoder; diff --git a/src/neon.js b/src/neon.js index b3a3abc..b6cb960 100644 --- a/src/neon.js +++ b/src/neon.js @@ -19,3 +19,4 @@ module.exports.decode = function (input) { module.exports.Entity = require('./entity'); module.exports.Map = require('./map'); module.exports.CHAIN = DecoderClass.CHAIN; +module.exports.BLOCK = EncoderClass.BLOCK; diff --git a/test/Encoder.js b/test/Encoder.js index c91e17b..b73f4b4 100644 --- a/test/Encoder.js +++ b/test/Encoder.js @@ -100,4 +100,26 @@ suite('Encoder', function () { neon.encode(entity) ); }); + + test('block', function () { + assert.equal("- foo\n" + + "- bar\n", neon.encode(["foo", "bar"], neon.BLOCK)); + }); + test('block 2', function () { + assert.equal("x: foo\n" + + "y: bar\n", neon.encode({x: "foo", y: "bar"}, neon.BLOCK)); + }); + test('block 3', function () { + assert.equal("x: foo\n" + + "y:\n" + + " - 1\n" + + " - 2\n", neon.encode({x: "foo", y: [1,2]}, neon.BLOCK)); + }); + test('block 5', function () { + assert.equal("x: foo\n" + + "y:\n" + + " - 1\n" + + " - 2\n", neon.encode({x: "foo", y: [1, 2]}, neon.BLOCK)); + }); + });