source: node_modules/ramda/src/into.js

main
Last change on this file was d24f17c, checked in by Aleksandar Panovski <apano77@…>, 15 months ago

Initial commit

  • Property mode set to 100644
File size: 2.0 KB
Line 
1var _curry3 =
2/*#__PURE__*/
3require("./internal/_curry3.js");
4
5var _isTransformer =
6/*#__PURE__*/
7require("./internal/_isTransformer.js");
8
9var _xReduce =
10/*#__PURE__*/
11require("./internal/_xReduce.js");
12
13var _stepCat =
14/*#__PURE__*/
15require("./internal/_stepCat.js");
16/**
17 * Transforms the items of the list with the transducer and appends the
18 * transformed items to the accumulator using an appropriate iterator function
19 * based on the accumulator type.
20 *
21 * The accumulator can be an array, string, object or a transformer. Iterated
22 * items will be appended to arrays and concatenated to strings. Objects will
23 * be merged directly or 2-item arrays will be merged as key, value pairs.
24 *
25 * The accumulator can also be a transformer object that provides a 2-arity
26 * reducing iterator function, step, 0-arity initial value function, init, and
27 * 1-arity result extraction function result. The step function is used as the
28 * iterator function in reduce. The result function is used to convert the
29 * final accumulator into the return type and in most cases is R.identity. The
30 * init function is used to provide the initial accumulator.
31 *
32 * The iteration is performed with [`R.reduce`](#reduce) after initializing the
33 * transducer.
34 *
35 * @func
36 * @memberOf R
37 * @since v0.12.0
38 * @category List
39 * @sig a -> (b -> b) -> [c] -> a
40 * @param {*} acc The initial accumulator value.
41 * @param {Function} xf The transducer function. Receives a transformer and returns a transformer.
42 * @param {Array} list The list to iterate over.
43 * @return {*} The final, accumulated value.
44 * @see R.transduce
45 * @example
46 *
47 * const numbers = [1, 2, 3, 4];
48 * const transducer = R.compose(R.map(R.add(1)), R.take(2));
49 *
50 * R.into([], transducer, numbers); //=> [2, 3]
51 *
52 * const intoArray = R.into([]);
53 * intoArray(transducer, numbers); //=> [2, 3]
54 */
55
56
57var into =
58/*#__PURE__*/
59_curry3(function into(acc, transducer, list) {
60 var xf = transducer(_isTransformer(acc) ? acc : _stepCat(acc));
61 return _xReduce(xf, xf['@@transducer/init'](), list);
62});
63
64module.exports = into;
Note: See TracBrowser for help on using the repository browser.