import { Template } from './template.js'; // 1. Basic variable let t = new Template('Hello {{ name }}!'); console.log('1:', t.render({ name: 'World' })); // 2. Format specifier t = new Template('Price: {{ price:0.00 }}'); console.log('2:', t.render({ price: 9.5 })); // 3. @let t = new Template('@let short = user.name\nHello {{ short }}!'); console.log('3:', t.render({ user: { name: 'Alice' } })); // 4. @for with separator via @if(!$first) t = new Template('@for(item of items){@if(!$first){, }{{ item }}}'); console.log('4:', t.render({ items: ['a', 'b', 'c'] })); // 5/6. @if / @else t = new Template('@if(admin){Admin}@else{User}'); console.log('5:', t.render({ admin: true })); console.log('6:', t.render({ admin: false })); // 7. Expression t = new Template('{{ name.toUpperCase() }}'); console.log('7:', t.render({ name: 'alice' })); // 8. $index t = new Template('@for(item of items){ {{ $index }}: {{ item }} }'); console.log('8:', t.render({ items: ['x', 'y'] })); // 9. Multiple @let t = new Template('@let a = first\n@let b = second\n{{ a }} and {{ b }}'); console.log('9:', t.render({ first: 'one', second: 'two' })); // 10. Nested for t = new Template('@for(group of groups){ @for(item of group.items){ {{ item }} } }'); console.log('10:', t.render({ groups: [{ items: [1, 2] }, { items: [3, 4] }] })); // 11. @empty block t = new Template('@for(item of items){ {{ item }} } @empty{No items}'); console.log('11a:', t.render({ items: [] })); console.log('11b:', t.render({ items: ['x'] })); // 12. $first, $last, $even, $odd, $count t = new Template('@for(item of items){[{{ item }} first={{ $first }} last={{ $last }} even={{ $even }} odd={{ $odd }} count={{ $count }}]}'); console.log('12:', t.render({ items: ['a', 'b', 'c'] })); // 13. $this to access the contexts root object t = new Template('@for(item of $this){ {{ item }} } @empty{No items}'); console.log('13a:', t.render([])); console.log('13b:', t.render(['x'])); // 14. @for with multiple variables (destructuring) t = new Template('@for(key, value of Object.entries(obj)){@if(!$first){, }{{ key }}={{ value }}}'); console.log('14:', t.render({ obj: { a: 1, b: 2, c: 3 } }));