2026-04-12 16:38:59 +02:00

57 lines
2.1 KiB
JavaScript

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 } }));