'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 = '';
	}
};
