from django.http import HttpResponse
from django.utils.encoding import force_text


class OvvpFile:
	def __init__(self):
		# { header: value, ... }
		self.headers = {}
		# [ 'column-name', ... ]
		self.columns = []
		# [ { column: value, ...}, ...]
		self.rows = []

	def to_lines(self):
		# header
		for hk in sorted(self.headers.keys()):
			yield f'{hk}\t{self.headers[hk]}\n'
		yield '\n'
		# columns
		yield '\t'.join(self.columns) + '\n'
		# rows
		for r in self.rows:
			yield '\t'.join([force_text(r[c]) for c in self.columns]) + '\n'

	def to_string(self):
		return ''.join(self.to_lines())

	# Pozn: tohle je ta jediná funkce, která se reálně používá…
	def to_HttpResponse(self):
		return HttpResponse(self.to_string(), content_type='text/plain; charset=utf-8')