Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Liquid Template Map Filter

How, exactly does one use the map filter in Liquid? I'm using it in Jekyll.

---
my_array: [apple, banana, orage]
my_map:
  hello: world
  foo: bar
my_string: "how does this work?"
---
{{ page.my_map | map ... }}

That's about where I get lost. I cannot seem to find any example of its usage in the docs or anywhere else online for that matter.

By the way, I do not know Ruby, yet, so the source code is not clear to me, either.

From the filter tests it looks like the following should produce something, but on GitHub, I am getting nothing:

{{ site.posts | map: 'title' | array_to_sentence_string }}

I would expect that I should get something like:

My First Blog Post, Yet Another Post, and Third Posts
like image 701
kzh Avatar asked Apr 22 '11 02:04

kzh


1 Answers

I was able to do what you want this way:

{{ site.posts | map: 'to_liquid' | map: 'title' | array_to_sentence_string }}

Explanation:

I think that site.posts is returning an array of Post instances instead of returning their to_liquid version (which feels very weird - probably it is a bug, you should report it). Instances of that class don't respond_to? :title, and since the Liquid code checks for that, the map returns nil for all instances.

like image 183
kikito Avatar answered Oct 01 '22 18:10

kikito