const Readable = require("stream").Readable;
const csv = require("csv-parser");

function createStream (text) {
  const stream = new Readable();
  stream.push(text);
  stream.push(null);
  return stream;
}

module.exports = function (csv_data) {
  const callback = this.async();
  let csv_headers = [];
  const file_data = []
  const stream = createStream(csv_data);
  stream.pipe(csv())
  .on('error', error => callback(error))
  .on('headers', headers => csv_headers = headers)
  .on('data', data => file_data.push(data))
  .on('end', () => {
    const id = csv_headers[0];
    const messages = {};
    for(let i = 1; i < csv_headers.length; i += 1) {
      const lang = csv_headers[i];
      const strings = {};
      file_data.forEach( data => {
        strings[data[id]] = data[lang];
      });
      messages[lang] = strings;
    }
    callback(null, `module.exports = ${JSON.stringify(messages)}`);
  })
}