As part of relaunching Codedrift on the Ghost platform, I wanted to make better looking tag sentences. This is the code that powers the tag segments in the "in X, but also Y, Z, & Q" format.
There's an extra comma when the tag count is exactly three, but there's no easy way to fix that issue without access to a .count property in Ghost.
{{#foreach tags}}{{!-- first tag --}}{{#if @first}}{{#if @last}}{{!-- Only tag in the collection --}}in <a href="{{url}}">{{name}}</a>{{/if}}{{#unless @last}}{{!-- first of at least two --}}in <a href="{{url}}">{{name}}</a>, but also{{/unless}}{{/if}}{{!-- last tag --}}{{#if @last}}{{#match @number "=" 2}}{{!-- (tagX, but also) tagY --}}<a href="{{url}}">{{name}}</a>{{/match}}{{#match @number ">" 2}}{{!-- (tagX, but also tagA...) & tagY --}}& <a href="{{url}}">{{name}}</a>{{/match}}{{/if}}{{!-- Not first, and not last --}}{{#unless @first}}{{#unless @last}}<a href="{{url}}">{{name}}</a>,{{/unless}}{{/unless}}{{/foreach}}