diff --git a/lib/js-yaml/loader.js b/lib/js-yaml/loader.js index e33b6c9a..ef01386b 100644 --- a/lib/js-yaml/loader.js +++ b/lib/js-yaml/loader.js @@ -1593,13 +1593,18 @@ function loadDocuments(input, options) { function loadAll(input, iterator, options) { - var documents = loadDocuments(input, options), index, length; + if (iterator !== null && typeof iterator === 'object' && typeof options === 'undefined') { + options = iterator; + iterator = null; + } + + var documents = loadDocuments(input, options); if (typeof iterator !== 'function') { return documents; } - for (index = 0, length = documents.length; index < length; index += 1) { + for (var index = 0, length = documents.length; index < length; index += 1) { iterator(documents[index]); } } @@ -1618,12 +1623,13 @@ function load(input, options) { } -function safeLoadAll(input, output, options) { - if (typeof output === 'function') { - loadAll(input, output, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options)); - } else { - return loadAll(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options)); +function safeLoadAll(input, iterator, options) { + if (typeof iterator === 'object' && iterator !== null && typeof options === 'undefined') { + options = iterator; + iterator = null; } + + return loadAll(input, iterator, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options)); } diff --git a/test/units/loader-parameters.js b/test/units/loader-parameters.js new file mode 100644 index 00000000..56cf3997 --- /dev/null +++ b/test/units/loader-parameters.js @@ -0,0 +1,54 @@ +'use strict'; + +var assert = require('assert'); +var yaml = require('../..'); + +suite('loader parameters', function () { + var testStr = 'test: 1 \ntest: 2'; + var expected = [ { test: 2 } ]; + var result; + + test('loadAll(input, options)', function () { + result = yaml.loadAll(testStr, { json: true }); + assert.deepEqual(result, expected); + + result = []; + yaml.loadAll(testStr, function (doc) { + result.push(doc); + }, { json: true }); + assert.deepEqual(result, expected); + }); + + test('loadAll(input, null, options)', function () { + result = yaml.loadAll(testStr, null, { json: true }); + assert.deepEqual(result, expected); + + result = []; + yaml.loadAll(testStr, function (doc) { + result.push(doc); + }, { json: true }); + assert.deepEqual(result, expected); + }); + + test('safeLoadAll(input, options)', function () { + result = yaml.safeLoadAll(testStr, { json: true }); + assert.deepEqual(result, expected); + + result = []; + yaml.safeLoadAll(testStr, function (doc) { + result.push(doc); + }, { json: true }); + assert.deepEqual(result, expected); + }); + + test('safeLoadAll(input, null, options)', function () { + result = yaml.safeLoadAll(testStr, null, { json: true }); + assert.deepEqual(result, expected); + + result = []; + yaml.safeLoadAll(testStr, function (doc) { + result.push(doc); + }, { json: true }); + assert.deepEqual(result, expected); + }); +});