mirror of https://github.com/sveltejs/svelte
30 lines
778 B
30 lines
778 B
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('}');
|
|
}
|