Hugo Text Title Tidying

Currently I am just displaying the title of my posts with no filtering. Now that I have developed a general format to help with some emacs Deft categorisation I have run into a little bit of a problem.

For example a typical title format is the following:

Linux ---> Hugo_Format_Title[tag@subtag-art]

and the hugo rendered html of course displays this on a card list and on a single page. I would like to remove the Linux ---> part and the tag part to optimise the space taken up by the title.

I am simply just using:

{{ .Title) }}

which gives the full title.

I want to utilise hugo functions to trim off the front up to the first -> and to remove the tag part including the closing brackets.

replaceRE seems perfect for this to search and replace using regular expressions, so lets give this a go:

{{ replaceRE "^.*->|\\[.*\\]" "" .Title }}

this gives me:

Hugo_Format_Title

the only issue I had was to figure out how to escape the bracket character, usually in a regex it is just one backslash, but unfortunately that gave a parse error. But this can be solved by a double backslash.

Note the use of the pipe character to remove both the prepend with the tags and the removal takes place by defining a replacement string of empty double quotes.

But there is a final thing left to do which I had completely forgotten about, to really tidy up the title I would like to replace the underscores with spaces. I can’t add in another piped OR command as the replacement string has to be a single space and not deleting the text.

The solution is to create a compound nested statement, as thus:

{{ replaceRE "_" " " (replaceRE "^.*->|\\[.*\\]" "" .Title) }}

so the output string of the original substitution can be fed into another occurrence of replaceRE

So the final title is

Hugo Format Title

This is much neater!

Comments

comments powered by Disqus