module Rails::Timeago::Helper

Public Instance Methods

timeago_script_tag() click to toggle source

Return a JavaScript tag to set jQuery timeago locale.

# File lib/rails-timeago/helper.rb, line 88
def timeago_script_tag
  javascript_tag "jQuery.timeago.settings.lang=\"#{I18n.locale}\";" if I18n.locale != 'en'
end
timeago_tag(time, html_options = {}) click to toggle source

Create a time tag usable for jQuery timeago plugin.

timeago_tag Time.zone.now
=> "<time datetime="2012-03-10T12:07:07+01:00"
          title="Sat, 10 Mar 2012 12:07:07 +0100"
          data-time-ago="2012-03-10T12:07:07+01:00">2012-03-10</time>"

Available options:

:nojs

Add time ago in words as time tag content instead of absolute time. (default: false)

:date_only

Only print date as tag content instead of full time. (default: true)

:format

A time format for localize method used to format static time. (default: :default)

:limit

Set a limit for time ago tags. All dates before given limit will not be converted. (default: 4.days.ago)

:force

Force time ago tag ignoring limit option. (default: false)

:default

String that will be returned if time is nil. (default: '-')

All other options will be given as options to tag helper.

rubocop:disable Metrics/AbcSize rubocop:disable Metrics/CyclomaticComplexity rubocop:disable Metrics/MethodLength rubocop:disable Metrics/PerceivedComplexity

# File lib/rails-timeago/helper.rb, line 47
def timeago_tag(time, html_options = {})
  time_options = Rails::Timeago.default_options

  time_options = time_options.merge html_options.extract!(*time_options.keys.select do |k|
                                                            html_options.include?(k)
                                                          end)
  return time_options[:default] if time.nil?

  time_options[:format] = time_options[:format].call(time, time_options) if time_options[:format].is_a?(Proc)
  if time_options[:title]
    html_options[:title] =
      time_options[:title].is_a?(Proc) ? time_options[:title].call(time, time_options) : time_options[:title]
  end
  time_options[:limit] = time_options[:limit].call if time_options[:limit].is_a?(Proc)

  time_range = unless time_options[:limit].nil?
                 now = Time.zone.now
                 limit = time_options[:limit]
                 limit < now ? limit...now : now...limit
               end

  if time_options[:force] || time_range.nil? || time_range.cover?(time)
    html_options['data-time-ago'] = time.iso8601
  end
  time_tag time, timeago_tag_content(time, time_options), html_options
end