The General Concatenation Operator

The FreshMarker Template Language provides two operators for concatenating string values: the string concatenation operators + and ~. Both operators produce a string from their two operands. The difference between the two operators lies in the way the strings are joined together. The unique feature of the ~ operator leads us to the new general concatenation operator.

Auto Hemisphere

Some implementations aren’t based on clever technical tricks, but rather on sheer diligence. That’s why it took FreshMarker Astro quite a while to finally figure out which side of the world a template engine instance is currently located on. The following article describes how FreshMarker Astro managed to get out of this predicament and almost always guesses the hemisphere correctly.

Enum Hashes

FreshMarker is based on the concepts of another template engine. This is evident from its directives, interpolations, and, of course, its name. Another detail also betrays its origins. The types in the FreshMarker Template Language for collections are sequences and hashes. Hashes represent mappings from strings to values. We now want to relax this restriction.

FreshMarker 2.6.0 Released

Just in time for Easter time there is a new FreshMarker release available. There are some more enhancements to the built-ins through the addition of an easy lambda support.

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.

IntelliJ IDEA Integration for Playfair

As a developer, I work with the IntelliJ IDEA development environment, as do many other developers. I don’t want to discuss its many advantages for developers here, but rather how to use Playfair with the AsciiDoc plugin.

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.

Playfair 1.0.0 Release

In the meantime, a lot has happened and the release of Playfair 1.0.0 was forgotten. We would like to make up for this omission and briefly present the highlights of the release.

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.