Login  Register

writing an ERB template for inline_indexterm

Posted by stallio on May 07, 2020; 6:39pm
URL: https://discuss.asciidoctor.org/writing-an-ERB-template-for-inline-indexterm-tp7977.html

I'm trying to write a custom template in ERB for index terms, but I'm having trouble making it work.

If I run Asciidoctor without an indexterm template, the primary, secondary, tertiary, see, and see-also all work out of the box. But I can't figure out how to call any of them in my template. I would think I should be able to do something like this:

<indexterm><primary><%= attr :primary %></primary>
<% if attr? :secondary %><secondary><%= attr :secondary %></secondary><% end %>
<% if attr? :tertiary %><tertiary><%= attr :tertiary %></tertiary><% end %>
<% if attr? :see %><see><%= attr :see %></see><% end %>
<% if attr? :see_also %><seealso><% attr :seealso %></seealso><% end %>
</indexterm>

I haven't been able to find a variation of this that works. I can call attr: terms but that gives me the entire list of terms, which is not what I want.

I've only been able to find one real example of an inline_indexterm template to use as reference, but it includes all of the Ruby script for breaking the terms list into primary/secondary/etc:
https://github.com/oreillymedia/asciidoctor-htmlbook/blob/master/htmlbook/inline_indexterm.html.erb

Am I missing something simple here? Or do I need to put the full Ruby script into my template in order to get it to work?