Sha256: 38793ed52a131ad54d93e034173c1ab49166bb95de5fe9378ebd6d85878159de
Contents?: true
Size: 1.25 KB
Versions: 2
Compression:
Stored size: 1.25 KB
Contents
class SpudEvents::CalendarBuilder DEFAULT_HEADERS = %w[Sunday Monday Tuesday Wednesday Thursday Friday Saturday] START_DAY = :sunday delegate :content_tag, :to => :view attr_accessor :view, :date, :callback def initialize(view, date, opts) @view = view @date = date @headers = opts.delete(:headers) || DEFAULT_HEADERS end def table(&block) @callback = block content_tag :table, :class => "calendar" do header + week_rows end end private def header content_tag :tr do @headers.map { |day| content_tag :th, day }.join.html_safe end end def week_rows weeks.map do |week| content_tag :tr do week.map { |day| day_cell(day) }.join.html_safe end end.join.html_safe end def day_cell(day) content_tag :td, view.capture(day, &callback), :class => day_classes(day), 'data-date' => day.strftime('%F') end def day_classes(day) classes = ['day-cell'] classes << "today" if day == Date.today classes << "not-month" if day.month != date.month classes.empty? ? nil : classes.join(" ") end def weeks first = date.beginning_of_month.beginning_of_week(START_DAY) last = date.end_of_month.end_of_week(START_DAY) (first..last).to_a.in_groups_of(7) end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
tb_events-1.1.2 | lib/spud_events/calendar_builder.rb |
tb_events-1.1.1 | lib/spud_events/calendar_builder.rb |