<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.theeggeadventure.com/wikimedia/index.php?action=history&amp;feed=atom&amp;title=Timeago.rb</id>
	<title>Timeago.rb - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.theeggeadventure.com/wikimedia/index.php?action=history&amp;feed=atom&amp;title=Timeago.rb"/>
	<link rel="alternate" type="text/html" href="https://www.theeggeadventure.com/wikimedia/index.php?title=Timeago.rb&amp;action=history"/>
	<updated>2026-05-16T02:00:21Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.46.0-beta</generator>
	<entry>
		<id>https://www.theeggeadventure.com/wikimedia/index.php?title=Timeago.rb&amp;diff=2034&amp;oldid=prev</id>
		<title>Egge: New page: Here&#039;s yet another timeago function which I found, for those who don&#039;t want to include a full Rails framework in your Ruby script.  Sorry - I don&#039;t remember where I copied this function fr...</title>
		<link rel="alternate" type="text/html" href="https://www.theeggeadventure.com/wikimedia/index.php?title=Timeago.rb&amp;diff=2034&amp;oldid=prev"/>
		<updated>2008-10-01T03:15:29Z</updated>

		<summary type="html">&lt;p&gt;New page: Here&amp;#039;s yet another timeago function which I found, for those who don&amp;#039;t want to include a full Rails framework in your Ruby script.  Sorry - I don&amp;#039;t remember where I copied this function fr...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Here&amp;#039;s yet another timeago function which I found, for those who don&amp;#039;t want to include a full Rails framework in your Ruby script.  Sorry - I don&amp;#039;t remember where I copied this function from.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=&amp;quot;ruby&amp;quot;&amp;gt;&lt;br /&gt;
def pluralize(count, s)&lt;br /&gt;
  if count == 1 then&lt;br /&gt;
    count.to_s + &amp;#039; &amp;#039; + s&lt;br /&gt;
  else&lt;br /&gt;
    count.to_s + &amp;#039; &amp;#039; + s + &amp;#039;s&amp;#039;&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
# options&lt;br /&gt;
# :start_date, sets the time to measure against, defaults to now&lt;br /&gt;
# :later, changes the adjective and measures time forward&lt;br /&gt;
# :round, sets the unit of measure 1 = seconds, 2 = minutes, 3 hours, 4 days, 5 weeks, 6 months, 7 years (yuck!)&lt;br /&gt;
# :max_seconds, sets the maximimum practical number of seconds before just referring to the actual time&lt;br /&gt;
# :date_format, used with &amp;lt;tt&amp;gt;to_formatted_s&amp;lt;tt&amp;gt;&lt;br /&gt;
def timeago(original, options = {})&lt;br /&gt;
  start_date = options.delete(:start_date) || Time.now&lt;br /&gt;
  later = options.delete(:later) || false&lt;br /&gt;
  round = options.delete(:round) || 7&lt;br /&gt;
  max_seconds = options.delete(:max_seconds) || 32556926&lt;br /&gt;
  date_format = options.delete(:date_format) || :default&lt;br /&gt;
&lt;br /&gt;
  # array of time period chunks&lt;br /&gt;
  chunks = [&lt;br /&gt;
    [60 * 60 * 24 * 365 , &amp;quot;year&amp;quot;],&lt;br /&gt;
    [60 * 60 * 24 * 30 , &amp;quot;month&amp;quot;],&lt;br /&gt;
    [60 * 60 * 24 * 7, &amp;quot;week&amp;quot;],&lt;br /&gt;
    [60 * 60 * 24 , &amp;quot;day&amp;quot;],&lt;br /&gt;
    [60 * 60 , &amp;quot;hour&amp;quot;],&lt;br /&gt;
    [60 , &amp;quot;minute&amp;quot;],&lt;br /&gt;
    [1 , &amp;quot;second&amp;quot;]&lt;br /&gt;
  ]&lt;br /&gt;
&lt;br /&gt;
  if later&lt;br /&gt;
    since = original.to_i - start_date.to_i&lt;br /&gt;
  else&lt;br /&gt;
    since = start_date.to_i - original.to_i&lt;br /&gt;
  end&lt;br /&gt;
  time = []&lt;br /&gt;
&lt;br /&gt;
  if since &amp;lt; max_seconds&lt;br /&gt;
    # Loop trough all the chunks&lt;br /&gt;
    totaltime = 0&lt;br /&gt;
&lt;br /&gt;
    for chunk in chunks[0..round]&lt;br /&gt;
      seconds    = chunk[0]&lt;br /&gt;
      name       = chunk[1]&lt;br /&gt;
&lt;br /&gt;
      count = ((since - totaltime) / seconds).floor&lt;br /&gt;
      time &amp;lt;&amp;lt; pluralize(count, name) unless count == 0&lt;br /&gt;
&lt;br /&gt;
      if time.size == 2 then&lt;br /&gt;
        break&lt;br /&gt;
      end&lt;br /&gt;
      totaltime += count * seconds&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if time.empty?&lt;br /&gt;
      &amp;quot;less than a #{chunks[round-1][1]} ago&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      &amp;quot;#{time.join(&amp;#039;, &amp;#039;)} #{later ? &amp;#039;later&amp;#039; : &amp;#039;ago&amp;#039;}&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
  else&lt;br /&gt;
    original.to_formatted_s(date_format)&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Ruby]]&lt;/div&gt;</summary>
		<author><name>Egge</name></author>
	</entry>
</feed>