require 'erb'
require 'ostruct'
class Dummy
def initialize
@pictures = [
OpenStruct.new(tags: [
OpenStruct.new(name: 'dog'),
OpenStruct.new(name: 'puppy')
]),
OpenStruct.new(tags: [
OpenStruct.new(name: 'animal'),
OpenStruct.new(name: 'puppy')
])
]
end
def render
template = ERB.new <<-EOF
<ul>
<% @pictures.flat_map { |pic| pic.tags.map(&:name) }.uniq.each do |name| %>
<li>
<%= name %>
</li>
<% end %>
</ul>
EOF
template.result(binding)
end
end
puts Dummy.new.render
cmVxdWlyZSAnZXJiJwpyZXF1aXJlICdvc3RydWN0JwoKY2xhc3MgRHVtbXkKICBkZWYgaW5pdGlhbGl6ZQogICAgQHBpY3R1cmVzID0gWwogICAgICBPcGVuU3RydWN0Lm5ldyh0YWdzOiBbCiAgICAgICAgT3BlblN0cnVjdC5uZXcobmFtZTogJ2RvZycpLAogICAgICAgIE9wZW5TdHJ1Y3QubmV3KG5hbWU6ICdwdXBweScpCiAgICAgIF0pLAogICAgICBPcGVuU3RydWN0Lm5ldyh0YWdzOiBbCiAgICAgICAgT3BlblN0cnVjdC5uZXcobmFtZTogJ2FuaW1hbCcpLAogICAgICAgIE9wZW5TdHJ1Y3QubmV3KG5hbWU6ICdwdXBweScpCiAgICAgIF0pCiAgICBdCiAgZW5kCgogIGRlZiByZW5kZXIKICAgIHRlbXBsYXRlID0gRVJCLm5ldyA8PC1FT0YKICAgIDx1bD4KICAgICAgPCUgQHBpY3R1cmVzLmZsYXRfbWFwIHsgfHBpY3wgcGljLnRhZ3MubWFwKCY6bmFtZSkgfS51bmlxLmVhY2ggZG8gfG5hbWV8ICU+CiAgICAgIDxsaT4KICAgICAgICA8JT0gbmFtZSAlPgogICAgICA8L2xpPgogICAgICA8JSBlbmQgJT4KICAgIDwvdWw+CiAgICBFT0YKICAgIHRlbXBsYXRlLnJlc3VsdChiaW5kaW5nKQogIGVuZAplbmQKCnB1dHMgRHVtbXkubmV3LnJlbmRlcg==