class Playbook::PbTimestamp::Timestamp

def caption_text

def caption_text
  case variant
  when "updated"
    format_updated_string
  when "elapsed"
    format_elapsed_string
  else
    show_date ? datetime_or_text : format_time_string
  end
end

def classname

def classname
  generate_classname("pb_timestamp_kit", variant_class, align)
end

def datetime_or_text

def datetime_or_text
  timestamp ? format_datetime_string : text
end

def format_date_string

def format_date_string
  "#{pb_date_time.to_month_downcase} #{pb_date_time.to_unpadded_day}#{format_year_string}"
end

def format_datetime_string

def format_datetime_string
  "#{format_date_string} · #{format_time_string}".html_safe
end

def format_elapsed_string

def format_elapsed_string
  user_string = show_user ? " by #{text}" : ""
  datetime_string = " #{time_ago_in_words(pb_date_time.convert_to_timestamp)} ago"
  "Last updated#{user_string}#{datetime_string}"
end

def format_time_string

def format_time_string
  "#{pb_date_time.to_hour}:#{pb_date_time.to_minutes}#{pb_date_time.to_meridian} #{format_timezone_string}".strip
end

def format_timezone_string

def format_timezone_string
  timezone && show_timezone ? pb_date_time.to_timezone.to_s : ""
end

def format_updated_string

def format_updated_string
  user_string = show_user ? " by #{text}" : ""
  datetime_string = " on #{format_date_string} at #{format_time_string}"
  "Last updated#{user_string}#{datetime_string}"
end

def format_year_string

def format_year_string
  pb_date_time.to_year != DateTime.now.year.to_s ? ", #{pb_date_time.to_year}" : ""
end

def pb_date_time

def pb_date_time
  Playbook::PbKit::PbDateTime.new(timestamp, timezone)
end

def variant_class

def variant_class
  case variant
  when "updated"
    "updated"
  when "elapsed"
    "elapsed"
  end
end