Home Reference Source

src/interpose.js

import seq from './seq';

/**
 * 集合の要素の間にセパレーターを挟み込んだ集合のイテレーターを返します。
 *
 * @param {*} sep - セパレーター
 * @param {*[] | iterator | null} coll - 集合
 *
 * @return {iterator} 集合の要素の間にセパレーターが挟み込まれた集合のイテレーター
 *
 * @example
 * interpose(0, range(1, 5));  // [1, 0, 2, 0, 3, 0, 4]のイテレーター
 */
export default function* interpose(sep, coll) {
  const iter = seq(coll);
  if (!iter) {
    return;
  }

  yield iter.next().value;

  for (const x of iter) {
    yield sep;
    yield x;
  }
}