Quick Tip: Invoking Liquid Tags from Custom Filters
I was recently working on a Jekyll website and figured out a neat trick involving custom filters. I was creating a filter to extend the functionality of the Jekyll
link tag to specially handle certain site-specific URLs and delegate to the
link tag in all other cases.
The tricky part of writing this filter was delegating to the
link tag from Ruby, as Liquid tags normally must be put in your markup. However, using the code below I was able to do it. (Just replace
<TAG> with your tag of choice, in my case
Link, and replace
<INPUT> with the input to the tag.)
Jekyll::Tags::<TAG>.send( :new, Jekyll::Tags::<TAG>.tag_name, <INPUT>, Liquid::ParseContext.new ).render(@context)
Using this trick, I was able to successfully write the filter I needed.