'use strict';

var through = require('through');
var fs = require('fs');

module.exports = function () {
    var line = '';
    var stream = through(write, flush);
    return stream;

    function write(buf) {
        for (var i = 0; i < buf.length; i++) {
            var c = typeof buf === 'string'
                ? buf.charAt(i)
                : String.fromCharCode(buf[i]);
            if (c === '\n') {
                flush();
            } else {
                line += c;
            }
        }
    }

    function flush() {
        if (fs.writeSync && (/^win/).test(process.platform)) {
            try {
                fs.writeSync(1, line + '\n');
            } catch (e) {
                stream.emit('error', e);
            }
        } else {
            try {
                console.log(line); // eslint-disable-line no-console
            } catch (e) {
                stream.emit('error', e);
            }
        }
        line = '';
    }
};
