haml は構造化文章をシンプルかつ強力に記述することができるが、 複数行のデータの扱いには以下の理由で不向きである。 行指向であるため適切なインデントの記述が強要される 頑張って埋め込んでも可読性が落ちて全体の構造が把握し辛くなる これを改善するには、コード(構造情報)とデータの分離が必要になる。 inline filter module 1 module Inline 2 include Haml::Filters::Base 3 4 def self.[](key) 5 @@data[key.to_s] rescue nil 6 end 7 8 def render(str) 9 @@data = Hash[*str.split(/^\s*@@\s*(\w+)\s*\n/m)[1..-1]] 10 return nil 11 end 12 end