import { snip } from '../../utils/snip';
import Renderer, { RenderOptions } from '../Renderer';
import EachBlock from '../../nodes/EachBlock';

export default function(node: EachBlock, renderer: Renderer, options: RenderOptions) {
	const snippet = snip(node.expression);

	const { start, end } = node.context_node;

	const ctx = node.index
		? `([✂${start}-${end}✂], ${node.index})`
		: `([✂${start}-${end}✂])`;

	const open = `\${${node.else ? `${snippet}.length ? ` : ''}@each(${snippet}, ${ctx} => \``;
	renderer.append(open);

	renderer.render(node.children, options);

	const close = `\`)`;
	renderer.append(close);

	if (node.else) {
		renderer.append(` : \``);
		renderer.render(node.else.children, options);
		renderer.append(`\``);
	}

	renderer.append('}');
}