Sha256: 4c063f1657fdebcda41b8e2c6e0989ce8c8c26243466487fae50210933042ca2
Contents?: true
Size: 817 Bytes
Versions: 4
Compression:
Stored size: 817 Bytes
Contents
module RailsEmailPreview class PreviewListPresenter attr_reader :previews def initialize(previews) @previews = previews end def columns(&block) split_in_halves(groups) { |_k, v| v.length }.each do |column_groups| block.call(column_groups) end end def groups @groups ||= by_class_name.inject({}) do |h, (_class_name, previews)| h.update previews.first.group_name => previews end end private def split_in_halves(xs, &weight) xs = xs.to_a ws = xs.map(&weight) col_w = ws.sum / 2 cur_w = 0 mid = ws.find_index { |w| (cur_w += w) >= col_w + w } [xs.first(mid), xs.from(mid)] end def by_class_name @by_class_name ||= previews.group_by(&:preview_class_name) end end end
Version data entries
4 entries across 4 versions & 1 rubygems