A Prompt Directive for FreshMarker

Mit der aktuellen Version von FreshMarker steht eine neue Prompt-Direktive zur Verfügung, mit der KI-generierte Inhalte direkt in Templates eingebettet werden können. Diese Funktion erweitert die Möglichkeiten von FreshMarker erheblich und macht dynamische, kontextbasierte Inhalte noch einfacher nutzbar. Was ist die Prompt-Direktive? Die neue Direktive <#prompt> ermöglicht es, innerhalb eines Templates einen Prompt an eine … Read more

Vier Jahre FreshMarker

Vor vier Jahren begann das Abenteuer FreshMarker mit dem Blog-Beitrag „FreshMarker, eine frische Template Engine für Java“. Was als akademisches Experiment startete, hat sich inzwischen zu einer vielseitigen und stabilen Template Engine entwickelt. Mit Version 2.5.0 und insgesamt 87 Blog-Beiträgen, die verschiedenste Aspekte beleuchten, ist nun der richtige Zeitpunkt für ein Resümee.

Checksums with FreshMarker File

Some time ago, I had the idea that a checksum calculation could be added to the FreshMarker File library. FreshMarker File is an extension for FreshMarker to support the Java types File and Path. A checksum support would allow the current checksum to be added to lists of files without any major detours. The idea is quite simple. A corresponding built-in is appended behind a file or path variable.

Context-Sensitive Tokenization With CongoCC

If you want to interpret a programming language or a DSL, there’s no way around using a parser generator. At the heart of FreshMarker is a template parser generated by the CongoCC parser generator. I can’t praise this JavaCC successor from Jon Revusky highly enough. Many new features and completely revised parts make the parser generator much more usable than its seemingly dead predecessor. CongoCC also helps wonderfully with a small current problem.

Quo Vadis, Lambda?

To implement a new built-in for sequences, lambdas were added as a new language component of the FreshMarker Expression Language. The lambda expression made it much easier to map the semantics of the new count built-in in an easily readable syntax. Now that lambda expressions are available, what else can they be used for and what still needs to be implemented?