Skip to content

Instantly share code, notes, and snippets.

@brdrgz
Last active September 30, 2015 07:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save brdrgz/128c8816bca94c3ebe26 to your computer and use it in GitHub Desktop.
Save brdrgz/128c8816bca94c3ebe26 to your computer and use it in GitHub Desktop.
class ActivityFeedDateRange < ActivityFeedDate
def valid?
start_date.present? && end_date.present?
end
def render
day_range = "#{start_date.day}-#{end_date.day}"
template.content_tag(:div, :class => "range-date-row") do
template.render partial: 'shared/activity_feed_date_range', locals: { month: start_date.strftime('%b'), day_range: day_range, year: start_date.year }
end
end
end
class ActivityFeedSingleDate < ActivityFeedDate
def valid?
start_date.day == end_date.day
end
def render
template.content_tag(:div, :class => "single-date-row") do
template.render partial: 'shared/activity_feed_date', locals: { month: start_date.strftime('%b'), day: start_date.day, year: start_date.year }
end
end
end
class ActivityFeedDate
include TemplateHelper
include ValidRenderable
attr_reader :start_date, :end_date
def initialize start_date, end_date
@start_date = start_date
@end_date = end_date
end
end
module ValidRenderable
def valid?
false
end
def render
end
end
@brdrgz
Copy link
Author

brdrgz commented Sep 30, 2015

  def render_activity_feed_date
    start_date = parse_activity_date activityStartDate
    end_date = parse_activity_date activityEndDate

    valid_date_type = renderable_date_types.find do |type|
     type.new(start_date, end_date).valid?
    end

    valid_date_type.new(start_date, end_date).render
  end

@brdrgz
Copy link
Author

brdrgz commented Sep 30, 2015

  def renderable_date_types
    [
     ActivityFeedVariedDates,
     ActivityFeedSingleDate,
     ActivityFeedDateRange
    ]
  end

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment