From 9dc5f603798de78817852558eb30b348f8477f4a Mon Sep 17 00:00:00 2001 From: thomashii Date: Mon, 20 Dec 2021 01:39:16 +0800 Subject: [PATCH] Updated jael --- packages/jael/angel_jael/CHANGELOG.md | 4 +++ packages/jael/angel_jael/lib/angel3_jael.dart | 35 +++++++++++-------- packages/jael/angel_jael/pubspec.yaml | 9 ++--- .../jael/angel_jael/test/minified_test.dart | 17 +++++++++ 4 files changed, 43 insertions(+), 22 deletions(-) diff --git a/packages/jael/angel_jael/CHANGELOG.md b/packages/jael/angel_jael/CHANGELOG.md index 21a32dbe..d93b153b 100644 --- a/packages/jael/angel_jael/CHANGELOG.md +++ b/packages/jael/angel_jael/CHANGELOG.md @@ -1,5 +1,9 @@ # Change Log +## 4.2.2 + +* Set default `cacheViews` to true + ## 4.2.1 * Added `minified` parameter for generating minified HTML output diff --git a/packages/jael/angel_jael/lib/angel3_jael.dart b/packages/jael/angel_jael/lib/angel3_jael.dart index be194ee3..ae51dc8c 100644 --- a/packages/jael/angel_jael/lib/angel3_jael.dart +++ b/packages/jael/angel_jael/lib/angel3_jael.dart @@ -14,19 +14,19 @@ import 'package:belatuk_symbol_table/belatuk_symbol_table.dart'; /// /// To apply additional transforms to parsed documents, provide a set of [patch] functions. AngelConfigurer jael(Directory viewsDirectory, - {String? fileExtension, + {String fileExtension = '.jael', bool strictResolution = false, - bool cacheViews = false, + bool cacheViews = true, Iterable patch = const [], bool asDSX = false, bool minified = false, CodeBuffer Function()? createBuffer}) { - var cache = {}; - fileExtension ??= '.jael'; - if (createBuffer == null && minified) { - createBuffer = () => CodeBuffer(space: '', newline: ''); - } else { - createBuffer ??= () => CodeBuffer(); + var cache = {}; + + var bufferFunc = createBuffer ?? () => CodeBuffer(); + + if (minified) { + bufferFunc = () => CodeBuffer(space: '', newline: ''); } return (Angel app) async { @@ -34,28 +34,33 @@ AngelConfigurer jael(Directory viewsDirectory, var errors = []; Document? processed; - if (cacheViews == true && cache.containsKey(name)) { + if (cacheViews && cache.containsKey(name)) { processed = cache[name]; } else { - var file = viewsDirectory.childFile(name + fileExtension!); + var file = viewsDirectory.childFile(name + fileExtension); var contents = await file.readAsString(); var doc = parseDocument(contents, - sourceUrl: file.uri, asDSX: asDSX, onError: errors.add)!; - processed = doc; + sourceUrl: file.uri, asDSX: asDSX, onError: errors.add); + if (doc == null) { + throw ArgumentError(name + fileExtension + " does not exists"); + } try { processed = await (resolve(doc, viewsDirectory, patch: patch, onError: errors.add)); - } catch (_) { + } catch (e) { // Ignore these errors, so that we can show syntax errors. } + if (processed == null) { + throw ArgumentError(name + fileExtension + " does not exists"); + } - if (cacheViews == true) { + if (cacheViews) { cache[name] = processed; } } - var buf = createBuffer!(); + var buf = bufferFunc(); var scope = SymbolTable( values: locals?.keys.fold>({}, (out, k) => out..[k.toString()] = locals[k]) ?? diff --git a/packages/jael/angel_jael/pubspec.yaml b/packages/jael/angel_jael/pubspec.yaml index 976e08b7..4ae6cf1f 100644 --- a/packages/jael/angel_jael/pubspec.yaml +++ b/packages/jael/angel_jael/pubspec.yaml @@ -1,5 +1,5 @@ name: angel3_jael -version: 4.2.1 +version: 4.2.2 description: Angel support for the Jael templating engine, similar to Blade or Liquid. homepage: https://angel3-framework.web.app/ repository: https://github.com/dukefirehawk/angel/tree/master/packages/jael/angel_jael @@ -17,9 +17,4 @@ dev_dependencies: angel3_test: ^4.0.0 html: ^0.15.0 test: ^1.17.3 - lints: ^1.0.0 -#dependency_overrides: -# jael3: -# path: ../jael -# jael3_preprocessor: -# path: ../jael_preprocessor + lints: ^1.0.0 \ No newline at end of file diff --git a/packages/jael/angel_jael/test/minified_test.dart b/packages/jael/angel_jael/test/minified_test.dart index 5f41fd32..e4d4f27d 100644 --- a/packages/jael/angel_jael/test/minified_test.dart +++ b/packages/jael/angel_jael/test/minified_test.dart @@ -72,4 +72,21 @@ void main() { .trim()) .outerHtml); }); + + test('can render multiples', () async { + var response = await client.get(Uri.parse('/github/thosakwe')); + response = await client.get(Uri.parse('/github/thosakwe')); + response = await client.get(Uri.parse('/github/thosakwe')); + response = await client.get(Uri.parse('/github/thosakwe')); + response = await client.get(Uri.parse('/github/thosakwe')); + + print('Body:\n${response.body}'); + expect( + html.parse(response.body).outerHtml, + html + .parse( + '''Hellothosakwe''' + .trim()) + .outerHtml); + }); }