Skip to content

Commit 10be97e

Browse files
ExE-Bossrlidwka
authored andcommitted
fix(loader): Add support for safe/loadAll(input, options)
1 parent d6983dd commit 10be97e

File tree

2 files changed

+67
-7
lines changed

2 files changed

+67
-7
lines changed

lib/js-yaml/loader.js

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1593,13 +1593,18 @@ function loadDocuments(input, options) {
15931593

15941594

15951595
function loadAll(input, iterator, options) {
1596-
var documents = loadDocuments(input, options), index, length;
1596+
if (iterator !== null && typeof iterator === 'object' && typeof options === 'undefined') {
1597+
options = iterator;
1598+
iterator = null;
1599+
}
1600+
1601+
var documents = loadDocuments(input, options);
15971602

15981603
if (typeof iterator !== 'function') {
15991604
return documents;
16001605
}
16011606

1602-
for (index = 0, length = documents.length; index < length; index += 1) {
1607+
for (var index = 0, length = documents.length; index < length; index += 1) {
16031608
iterator(documents[index]);
16041609
}
16051610
}
@@ -1618,12 +1623,13 @@ function load(input, options) {
16181623
}
16191624

16201625

1621-
function safeLoadAll(input, output, options) {
1622-
if (typeof output === 'function') {
1623-
loadAll(input, output, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));
1624-
} else {
1625-
return loadAll(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));
1626+
function safeLoadAll(input, iterator, options) {
1627+
if (typeof iterator === 'object' && iterator !== null && typeof options === 'undefined') {
1628+
options = iterator;
1629+
iterator = null;
16261630
}
1631+
1632+
return loadAll(input, iterator, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));
16271633
}
16281634

16291635

test/units/loader-parameters.js

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
'use strict';
2+
3+
var assert = require('assert');
4+
var yaml = require('../..');
5+
6+
suite('loader parameters', function () {
7+
var testStr = 'test: 1 \ntest: 2';
8+
var expected = [ { test: 2 } ];
9+
var result;
10+
11+
test('loadAll(input, options)', function () {
12+
result = yaml.loadAll(testStr, { json: true });
13+
assert.deepEqual(result, expected);
14+
15+
result = [];
16+
yaml.loadAll(testStr, function (doc) {
17+
result.push(doc);
18+
}, { json: true });
19+
assert.deepEqual(result, expected);
20+
});
21+
22+
test('loadAll(input, null, options)', function () {
23+
result = yaml.loadAll(testStr, null, { json: true });
24+
assert.deepEqual(result, expected);
25+
26+
result = [];
27+
yaml.loadAll(testStr, function (doc) {
28+
result.push(doc);
29+
}, { json: true });
30+
assert.deepEqual(result, expected);
31+
});
32+
33+
test('safeLoadAll(input, options)', function () {
34+
result = yaml.safeLoadAll(testStr, { json: true });
35+
assert.deepEqual(result, expected);
36+
37+
result = [];
38+
yaml.safeLoadAll(testStr, function (doc) {
39+
result.push(doc);
40+
}, { json: true });
41+
assert.deepEqual(result, expected);
42+
});
43+
44+
test('safeLoadAll(input, null, options)', function () {
45+
result = yaml.safeLoadAll(testStr, null, { json: true });
46+
assert.deepEqual(result, expected);
47+
48+
result = [];
49+
yaml.safeLoadAll(testStr, function (doc) {
50+
result.push(doc);
51+
}, { json: true });
52+
assert.deepEqual(result, expected);
53+
});
54+
});

0 commit comments

Comments
 (0)