From 9865ed93d28cab2e12859e4550bca225fbce31f7 Mon Sep 17 00:00:00 2001 From: thomashii Date: Mon, 13 Sep 2021 08:30:02 +0800 Subject: [PATCH] Updated Jael to use belatuk_symbol_table --- packages/jael/.gitignore | 51 ------------- packages/jael/.idea/misc.xml | 6 -- packages/jael/.idea/modules.xml | 8 --- ...locks_within_blocks_in_block_test_dart.xml | 8 --- .../for_loop_in_render_test_dart.xml | 8 --- .../.idea/runConfigurations/jael__example.xml | 7 -- .../.idea/runConfigurations/main_dart.xml | 7 -- .../tests_in_dsx_test_dart.xml | 7 -- .../.idea/runConfigurations/tests_in_jael.xml | 8 --- packages/jael/.idea/vcs.xml | 6 -- packages/jael/angel_jael/.gitignore | 71 ------------------- packages/jael/angel_jael/CHANGELOG.md | 27 +++++-- packages/jael/angel_jael/LICENSE | 42 ++++++----- packages/jael/angel_jael/README.md | 37 ++++------ .../jael/angel_jael/analysis_options.yaml | 4 +- packages/jael/angel_jael/lib/angel3_jael.dart | 2 +- packages/jael/angel_jael/pubspec.yaml | 15 ++-- packages/jael/jael/.gitignore | 71 ------------------- packages/jael/jael/CHANGELOG.md | 48 +++++++++---- packages/jael/jael/LICENSE | 42 ++++++----- packages/jael/jael/README.md | 19 ++--- packages/jael/jael/analysis_options.yaml | 5 +- packages/jael/jael/bin/jaelfmt.dart | 8 ++- packages/jael/jael/example/main.dart | 2 +- packages/jael/jael/lib/src/ast/call.dart | 2 +- .../jael/jael/lib/src/ast/expression.dart | 2 +- .../jael/jael/lib/src/ast/identifier.dart | 2 +- packages/jael/jael/lib/src/ast/member.dart | 2 +- packages/jael/jael/lib/src/ast/string.dart | 2 +- packages/jael/jael/lib/src/renderer.dart | 6 +- packages/jael/jael/pubspec.yaml | 6 +- .../jael/test/render/custom_element_test.dart | 2 +- packages/jael/jael/test/render/dsx_test.dart | 2 +- .../jael/jael/test/render/render_test.dart | 2 +- packages/jael/jael_language_server/.gitignore | 21 ------ packages/jael/jael_preprocessor/.gitignore | 71 ------------------- packages/jael/jael_preprocessor/CHANGELOG.md | 30 +++++--- packages/jael/jael_preprocessor/LICENSE | 42 ++++++----- packages/jael/jael_preprocessor/README.md | 19 ++--- .../jael_preprocessor/analysis_options.yaml | 5 +- .../lib/jael3_preprocessor.dart | 2 +- packages/jael/jael_preprocessor/pubspec.yaml | 11 +-- .../jael_preprocessor/test/block_test.dart | 2 +- .../jael_preprocessor/test/include_test.dart | 2 +- packages/jael/jael_web/.gitignore | 16 ----- 45 files changed, 231 insertions(+), 527 deletions(-) delete mode 100644 packages/jael/.gitignore delete mode 100644 packages/jael/.idea/misc.xml delete mode 100644 packages/jael/.idea/modules.xml delete mode 100644 packages/jael/.idea/runConfigurations/blocks_within_blocks_in_block_test_dart.xml delete mode 100644 packages/jael/.idea/runConfigurations/for_loop_in_render_test_dart.xml delete mode 100644 packages/jael/.idea/runConfigurations/jael__example.xml delete mode 100644 packages/jael/.idea/runConfigurations/main_dart.xml delete mode 100644 packages/jael/.idea/runConfigurations/tests_in_dsx_test_dart.xml delete mode 100644 packages/jael/.idea/runConfigurations/tests_in_jael.xml delete mode 100644 packages/jael/.idea/vcs.xml delete mode 100644 packages/jael/angel_jael/.gitignore delete mode 100644 packages/jael/jael/.gitignore delete mode 100644 packages/jael/jael_language_server/.gitignore delete mode 100644 packages/jael/jael_preprocessor/.gitignore delete mode 100644 packages/jael/jael_web/.gitignore diff --git a/packages/jael/.gitignore b/packages/jael/.gitignore deleted file mode 100644 index 37e7b7e6..00000000 --- a/packages/jael/.gitignore +++ /dev/null @@ -1,51 +0,0 @@ -# Created by .ignore support plugin (hsz.mobi) -### JetBrains template -# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm -# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 - -# User-specific stuff: -.idea/**/workspace.xml -.idea/**/tasks.xml -.idea/dictionaries - -# Sensitive or high-churn files: -.idea/**/dataSources/ -.idea/**/dataSources.ids -.idea/**/dataSources.xml -.idea/**/dataSources.local.xml -.idea/**/sqlDataSources.xml -.idea/**/dynamic.xml -.idea/**/uiDesigner.xml - -# Gradle: -.idea/**/gradle.xml -.idea/**/libraries - -# CMake -cmake-build-debug/ - -# Mongo Explorer plugin: -.idea/**/mongoSettings.xml - -## File-based project format: -*.iws - -## Plugin-specific files: - -# IntelliJ -out/ - -# mpeltonen/sbt-idea plugin -.idea_modules/ - -# JIRA plugin -atlassian-ide-plugin.xml - -# Cursive Clojure plugin -.idea/replstate.xml - -# Crashlytics plugin (for Android Studio and IntelliJ) -com_crashlytics_export_strings.xml -crashlytics.properties -crashlytics-build.properties -fabric.properties diff --git a/packages/jael/.idea/misc.xml b/packages/jael/.idea/misc.xml deleted file mode 100644 index 639900d1..00000000 --- a/packages/jael/.idea/misc.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/jael/.idea/modules.xml b/packages/jael/.idea/modules.xml deleted file mode 100644 index d171efec..00000000 --- a/packages/jael/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/jael/.idea/runConfigurations/blocks_within_blocks_in_block_test_dart.xml b/packages/jael/.idea/runConfigurations/blocks_within_blocks_in_block_test_dart.xml deleted file mode 100644 index 5032bd0a..00000000 --- a/packages/jael/.idea/runConfigurations/blocks_within_blocks_in_block_test_dart.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/jael/.idea/runConfigurations/for_loop_in_render_test_dart.xml b/packages/jael/.idea/runConfigurations/for_loop_in_render_test_dart.xml deleted file mode 100644 index de242953..00000000 --- a/packages/jael/.idea/runConfigurations/for_loop_in_render_test_dart.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/jael/.idea/runConfigurations/jael__example.xml b/packages/jael/.idea/runConfigurations/jael__example.xml deleted file mode 100644 index 5b6d4161..00000000 --- a/packages/jael/.idea/runConfigurations/jael__example.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/jael/.idea/runConfigurations/main_dart.xml b/packages/jael/.idea/runConfigurations/main_dart.xml deleted file mode 100644 index 644077c1..00000000 --- a/packages/jael/.idea/runConfigurations/main_dart.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/jael/.idea/runConfigurations/tests_in_dsx_test_dart.xml b/packages/jael/.idea/runConfigurations/tests_in_dsx_test_dart.xml deleted file mode 100644 index 9c1ec0de..00000000 --- a/packages/jael/.idea/runConfigurations/tests_in_dsx_test_dart.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/jael/.idea/runConfigurations/tests_in_jael.xml b/packages/jael/.idea/runConfigurations/tests_in_jael.xml deleted file mode 100644 index b905e806..00000000 --- a/packages/jael/.idea/runConfigurations/tests_in_jael.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/jael/.idea/vcs.xml b/packages/jael/.idea/vcs.xml deleted file mode 100644 index 94a25f7f..00000000 --- a/packages/jael/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/jael/angel_jael/.gitignore b/packages/jael/angel_jael/.gitignore deleted file mode 100644 index 24d68312..00000000 --- a/packages/jael/angel_jael/.gitignore +++ /dev/null @@ -1,71 +0,0 @@ -# See https://www.dartlang.org/tools/private-files.html - -# Files and directories created by pub -.dart_tool -.packages -.pub/ -build/ - -# If you're building an application, you may want to check-in your pubspec.lock -pubspec.lock - -# Directory created by dartdoc -# If you don't generate documentation locally you can remove this line. -doc/api/ - -### Dart template -# See https://www.dartlang.org/tools/private-files.html - -# Files and directories created by pub - -# SDK 1.20 and later (no longer creates packages directories) - -# Older SDK versions -# (Include if the minimum SDK version specified in pubsepc.yaml is earlier than 1.20) -.project -.buildlog -**/packages/ - - -# Files created by dart2js -# (Most Dart developers will use pub build to compile Dart, use/modify these -# rules if you intend to use dart2js directly -# Convention is to use extension '.dart.js' for Dart compiled to Javascript to -# differentiate from explicit Javascript files) -*.dart.js -*.part.js -*.js.deps -*.js.map -*.info.json - -# Directory created by dartdoc - -# Don't commit pubspec lock file -# (Library packages only! Remove pattern if developing an application package) -### JetBrains template -# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm -# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 - -# User-specific stuff: - -## VsCode -.vscode/ - -## File-based project format: -*.iws - -## Plugin-specific files: - -# IntelliJ -.idea/ -/out/ -.idea_modules/ - -# JIRA plugin -atlassian-ide-plugin.xml - -# Crashlytics plugin (for Android Studio and IntelliJ) -com_crashlytics_export_strings.xml -crashlytics.properties -crashlytics-build.properties -fabric.properties diff --git a/packages/jael/angel_jael/CHANGELOG.md b/packages/jael/angel_jael/CHANGELOG.md index 087530c4..e7cb5908 100644 --- a/packages/jael/angel_jael/CHANGELOG.md +++ b/packages/jael/angel_jael/CHANGELOG.md @@ -1,19 +1,32 @@ -# 4.0.0 +# Change Log + +## 4.1.0 + +* Updated to use `belatuk_symbol_table` package +* Upgraded from `pendantic` to `lints` linter + +## 4.0.0 + * Migrated to support Dart SDK 2.12.x NNBD -# 3.0.0 +## 3.0.0 + * Migrated to work with Dart SDK 2.12.x Non NNBD -# 2.0.0 +## 2.0.0 + * Angel 2 and Dart 2 updates. * Default to `.jael` instead of `.jl`. -# 1.0.3 +## 1.0.3 + * Update for annoying map casting bug. -# 1.0.2 +## 1.0.2 + * Update for DSX support. * Clear the buffer on errors. -# 1.0.1 -* Use `Renderer.errorDocument`. \ No newline at end of file +## 1.0.1 + +* Use `Renderer.errorDocument`. diff --git a/packages/jael/angel_jael/LICENSE b/packages/jael/angel_jael/LICENSE index 8f65b579..df5e0635 100644 --- a/packages/jael/angel_jael/LICENSE +++ b/packages/jael/angel_jael/LICENSE @@ -1,21 +1,29 @@ -MIT License (MIT) +BSD 3-Clause License -Copyright (c) 2021 dukefirehawk.com +Copyright (c) 2021, dukefirehawk.com +All rights reserved. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/packages/jael/angel_jael/README.md b/packages/jael/angel_jael/README.md index f5a827e5..db0b0e3d 100644 --- a/packages/jael/angel_jael/README.md +++ b/packages/jael/angel_jael/README.md @@ -1,25 +1,23 @@ -# angel3_jael -[![version](https://img.shields.io/badge/pub-v4.0.1-brightgreen)](https://pub.dartlang.org/packages/angel3_jael) +# Angel3 Jael + +[![version](https://img.shields.io/badge/pub-v4.1.0-brightgreen)](https://pub.dev/packages/angel3_jael) [![Null Safety](https://img.shields.io/badge/null-safety-brightgreen)](https://dart.dev/null-safety) [![Gitter](https://img.shields.io/gitter/room/angel_dart/discussion)](https://gitter.im/angel_dart/discussion) +[![License](https://img.shields.io/github/license/dart-backend/belatuk-common-utilities)](https://github.com/dukefirehawk/angel/tree/angel3/packages/jael/angel_jael/LICENSE) -[![License](https://img.shields.io/github/license/dukefirehawk/angel)](https://github.com/dukefirehawk/angel/tree/angel3/packages/jael/angel_jael/LICENSE) +[Angel 3](https://github.com/dukefirehawk/angel/tree/angel3) support for [Jael 3](https://github.com/dukefirehawk/angel/tree/angel3/packages/jael/jael). +## Installation - -[Angel](https://github.com/dukefirehawk/angel/tree/angel3) -support for -[Jael](https://github.com/dukefirehawk/angel/tree/angel3/packages/jael/jael). - -# Installation In your `pubspec.yaml`: ```yaml dependencies: - angel3_jael: ^4.0.0 + angel3_jael: ^4.1.0 ``` -# Usage +## Usage + Just like `mustache` and other renderers, configuring Angel to use Jael is as simple as calling `app.configure`: @@ -38,19 +36,15 @@ AngelConfigurer myPlugin(FileSystem fileSystem) { } ``` -`package:angel3_jael` supports caching views, to improve server performance. -You might not want to enable this in development, so consider setting -the flag to `app.isProduction`: +`package:angel3_jael` supports caching views, to improve server performance. You might not want to enable this in development, so consider setting the flag to `app.isProduction`: -``` +```dart jael(viewsDirectory, cacheViews: app.isProduction); ``` -Keep in mind that this package uses `package:file`, rather than -`dart:io`. +Keep in mind that this package uses `package:file`, rather than `dart:io`. -The following is a basic example of a server setup that can render Jael -templates from a directory named `views`: +The following is a basic example of a server setup that can render Jael templates from a directory named `views`: ```dart import 'package:angel3_framework/angel3_framework.dart'; @@ -58,7 +52,7 @@ import 'package:angel3_jael/angel3_jael.dart'; import 'package:file/local.dart'; import 'package:logging/logging.dart'; -main() async { +void main() async { var app = Angel(); var fileSystem = const LocalFileSystem(); @@ -83,5 +77,4 @@ main() async { } ``` -To apply additional transforms to parsed documents, provide a -set of `patch` functions, like in `package:jael3_preprocessor`. \ No newline at end of file +To apply additional transforms to parsed documents, provide a set of `patch` functions, like in `package:jael3_preprocessor`. diff --git a/packages/jael/angel_jael/analysis_options.yaml b/packages/jael/angel_jael/analysis_options.yaml index eae1e42a..ea2c9e94 100644 --- a/packages/jael/angel_jael/analysis_options.yaml +++ b/packages/jael/angel_jael/analysis_options.yaml @@ -1,3 +1 @@ -analyzer: - strong-mode: - implicit-casts: false \ No newline at end of file +include: package:lints/recommended.yaml \ No newline at end of file diff --git a/packages/jael/angel_jael/lib/angel3_jael.dart b/packages/jael/angel_jael/lib/angel3_jael.dart index 1a8e92d9..d126a741 100644 --- a/packages/jael/angel_jael/lib/angel3_jael.dart +++ b/packages/jael/angel_jael/lib/angel3_jael.dart @@ -3,7 +3,7 @@ import 'package:angel3_code_buffer/angel3_code_buffer.dart'; import 'package:file/file.dart'; import 'package:jael3/jael3.dart'; import 'package:jael3_preprocessor/jael3_preprocessor.dart'; -import 'package:angel3_symbol_table/angel3_symbol_table.dart'; +import 'package:belatuk_symbol_table/belatuk_symbol_table.dart'; /// Configures an Angel server to use Jael to render templates. /// diff --git a/packages/jael/angel_jael/pubspec.yaml b/packages/jael/angel_jael/pubspec.yaml index c11e0755..c113b104 100644 --- a/packages/jael/angel_jael/pubspec.yaml +++ b/packages/jael/angel_jael/pubspec.yaml @@ -1,5 +1,5 @@ name: angel3_jael -version: 4.0.0 +version: 4.1.0 description: Angel support for the Jael templating engine, similar to Blade or Liquid. homepage: https://github.com/dukefirehawk/angel/tree/angel3/packages/jael/angel_jael environment: @@ -7,15 +7,18 @@ environment: dependencies: angel3_framework: ^4.0.0 angel3_code_buffer: ^2.0.0 - angel3_symbol_table: ^2.0.0 - jael3: ^4.0.0 - jael3_preprocessor: ^4.0.0 + belatuk_symbol_table: ^3.0.0 + jael3: ^4.1.0 + jael3_preprocessor: ^4.1.0 file: ^6.0.0 logging: ^1.0.1 dev_dependencies: angel3_test: ^4.0.0 html: ^0.15.0 test: ^1.17.3 + lints: ^1.0.0 #dependency_overrides: -# web_socket_channel: ^2.0.0 -# http: ^0.13.0 \ No newline at end of file +# jael3: +# path: ../jael +# jael3_preprocessor: +# path: ../jael_preprocessor diff --git a/packages/jael/jael/.gitignore b/packages/jael/jael/.gitignore deleted file mode 100644 index 24d68312..00000000 --- a/packages/jael/jael/.gitignore +++ /dev/null @@ -1,71 +0,0 @@ -# See https://www.dartlang.org/tools/private-files.html - -# Files and directories created by pub -.dart_tool -.packages -.pub/ -build/ - -# If you're building an application, you may want to check-in your pubspec.lock -pubspec.lock - -# Directory created by dartdoc -# If you don't generate documentation locally you can remove this line. -doc/api/ - -### Dart template -# See https://www.dartlang.org/tools/private-files.html - -# Files and directories created by pub - -# SDK 1.20 and later (no longer creates packages directories) - -# Older SDK versions -# (Include if the minimum SDK version specified in pubsepc.yaml is earlier than 1.20) -.project -.buildlog -**/packages/ - - -# Files created by dart2js -# (Most Dart developers will use pub build to compile Dart, use/modify these -# rules if you intend to use dart2js directly -# Convention is to use extension '.dart.js' for Dart compiled to Javascript to -# differentiate from explicit Javascript files) -*.dart.js -*.part.js -*.js.deps -*.js.map -*.info.json - -# Directory created by dartdoc - -# Don't commit pubspec lock file -# (Library packages only! Remove pattern if developing an application package) -### JetBrains template -# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm -# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 - -# User-specific stuff: - -## VsCode -.vscode/ - -## File-based project format: -*.iws - -## Plugin-specific files: - -# IntelliJ -.idea/ -/out/ -.idea_modules/ - -# JIRA plugin -atlassian-ide-plugin.xml - -# Crashlytics plugin (for Android Studio and IntelliJ) -com_crashlytics_export_strings.xml -crashlytics.properties -crashlytics-build.properties -fabric.properties diff --git a/packages/jael/jael/CHANGELOG.md b/packages/jael/jael/CHANGELOG.md index 9f064517..09392106 100644 --- a/packages/jael/jael/CHANGELOG.md +++ b/packages/jael/jael/CHANGELOG.md @@ -1,48 +1,68 @@ -# 4.0.0 +# Change Log + +## 4.1.0 + +* Updated to use `belatuk_symbol_table` package +* Upgraded from `pendantic` to `lints` linter + +## 4.0.0 + * Migrated to support Dart SDK 2.12.x NNBD -# 3.0.0 +## 3.0.0 + * Migrated to work with Dart SDK 2.12.x Non NNBD -# 2.0.2 +## 2.0.2 + * Fixed handling of `if` in non-strict mode. * Roll `JaelFormatter` and `jaelfmt`. -# 2.0.1 +## 2.0.1 + * Fixed bug where the `textarea` name check would never return `true`. -# 2.0.0+1 +## 2.0.0+1 + * Meta-update for Pub score. -# 2.0.0 +## 2.0.0 + * Dart 2 updates. * Remove usage of `package:dart2_constant`. -# 1.0.6+1 +## 1.0.6+1 + * Ensure `` passes attributes. -# 1.0.6 +## 1.0.6 + * Add `index-as` to `for-each`. * Support registering + rendering custom elements. * Improve handling of booleans in non-strict mode. -# 1.0.5 +## 1.0.5 + * Add support for DSX, a port of JSX to Dart. -# 1.0.4 +## 1.0.4 + * Skip HTML comments in free text. -# 1.0.3 +## 1.0.3 + * Fix a scanner bug that prevented proper parsing of HTML nodes followed by free text. * Don't trim `