"use strict";

// Generated by CoffeeScript 2.3.2
// # CSV Generator Sync
// Provides a synchronous alternative to the CSV generator.
// ## Usage 
// `const csv = generate(options)`  
// ## Source Code
var generate;
generate = require('.');

module.exports = function (options) {
  var chunks, generator, work;

  if (typeof options === 'string' && /\d+/.test(options)) {
    options = parseInt(options);
  }

  if (Number.isInteger(options)) {
    options = {
      length: options
    };
  }

  if (!Number.isInteger(options != null ? options.length : void 0)) {
    throw Error('Invalid Argument: length is not defined');
  }

  chunks = [];
  work = true; // See https://nodejs.org/api/stream.html#stream_new_stream_readable_options

  options.highWaterMark = options.objectMode ? 16 : 16384;
  generator = new generate.Generator(options);

  generator.push = function (chunk) {
    if (chunk === null) {
      return work = false;
    }

    if (options.objectMode) {
      return chunks.push(chunk);
    } else {
      return chunks.push(chunk);
    }
  };

  while (work) {
    generator._read(options.highWaterMark);
  }

  if (!options.objectMode) {
    chunks = chunks.join('');
  }

  return chunks;
};