import 'dart:math';
import 'package:code_buffer/code_buffer.dart';
import 'package:jael/jael.dart' as jael;
import 'package:symbol_table/symbol_table.dart';
import 'package:test/test.dart';
void main() {
test('render into div', () {
var template = '''
The square root of {{ n }} is {{ sqrt(n).toInt() }}.
''';
var html = render(template, {'sqrt': sqrt});
print(html);
expect(
html,
'''
The square root of 16 is 4.
'''
.trim());
});
test('render into explicit tag name', () {
var template = '''
The square root of {{ n }} is {{ sqrt(n).toInt() }}.
''';
var html = render(template, {'sqrt': sqrt});
print(html);
expect(
html,
'''
The square root of 16 is 4.
'''
.trim());
});
test('pass attributes', () {
var template = '''
The square root of {{ n }} is {{ sqrt(n).toInt() }}.
''';
var html = render(template, {'sqrt': sqrt});
print(html);
expect(
html,
'''
The square root of 16 is 4.
'''
.trim());
});
test('render without tag name', () {
var template = '''
The square root of {{ n }} is {{ sqrt(n).toInt() }}.
''';
var html = render(template, {'sqrt': sqrt});
print(html);
expect(
html,
'''
The square root of 16 is 4.
'''
.trim());
});
}
String render(String template, [Map values = const {}]) {
var doc = jael.parseDocument(template, onError: (e) => throw e)!;
var buffer = CodeBuffer();
const jael.Renderer().render(doc, buffer, SymbolTable(values: values));
return buffer.toString();
}